這可能有點不好意思,但我似乎無法找到有關此行爲的任何信息。C#單行列表行爲
下面是代碼:
class Cars
{
public int year = 0;
public string make = " ";
public string model = " ";
public Cars()
{
}
public Cars(int tYear, string tMake, string tModel)
{
year = tYear;
make = tMake;
model = tModel;
}
public string ConvertToString()
{
return year.ToString() + make + model;
}
}
class Program
{
Cars oneCar = new Cars();
List<Cars> manyCars = new List<Cars>();
public void Init()
{
manyCars.Add(new Cars(1993, "Nissan", "240SX"));
manyCars.Add(new Cars(2001, "Isuzu", "Rodeo"));
manyCars.Add(new Cars(2010, "Ford", "F150"));
oneCar = manyCars[2];
oneCar.model = "Pinto";
for (int i = 0; i < manyCars.Count(); i++)
Console.WriteLine(manyCars[i].ConvertToString());
Console.WriteLine(oneCar.ConvertToString());
}
static void Main(string[] args)
{
Program prg1 = new Program();
prg1.Init();
}
}
輸出是這樣的:
1993Nissan240SX
2001IsuzuRodeo
2010FordPinto
2010FordPinto
爲什麼第三行讀取Pinto而不是F150?它似乎將oneCar變量設置爲指針或其他東西。這怎麼可以避免?我認爲這就是「新」關鍵字所完成的。
在此先感謝您的幫助。
請仔細閱讀http://pobox.com/~skeet/csharp/references.html –
您將需要克隆manyCars [2],然後進行更改克隆的對象。 – d89761