【发布时间】:2021-11-18 01:31:46
【问题描述】:
我想用整数列表初始化我的类,例如:
{1,5,6,7,1,0} 然后修改它们并得到两个字段,一个具有相同的整数列表,第二个具有修改后的整数列表。但结果,我得到了两个带有值的修改列表:{0,4,5,6,0,0}。有人可以向我解释为什么这段代码会这样吗?
我的班级
public class MyClass
{
public List<int> numbers { get; }
public List<int> diffrentNum { get; set; }
public MyClass(List<int> _numbers)
{
numbers = _numbers;
diffrentNum = GetNumbers();
}
private List<int> GetNumbers()
{
List<int> localNumbers = numbers;
for (int i=0;i<localNumbers.Count-1;i++)
{
if (localNumbers[i] > 0)
{
localNumbers[i]--;
}
}
return localNumbers;
}
}
主要
static void Main(string[] args)
{
List<int> someDate = new List<int>();
someDate.Add(1);
someDate.Add(5);
someDate.Add(6);
someDate.Add(7);
someDate.Add(1);
someDate.Add(0);
MyClass myclass= new MyClass(someDate);
Console.WriteLine(String.Join("", new List<int>(someDate).ConvertAll(i => i.ToString()).ToArray()));
Console.WriteLine(String.Join("", new List<int>(myclass.numbers).ConvertAll(i => i.ToString()).ToArray()));
Console.WriteLine(String.Join("", new List<int>(myclass.diffrentNum).ConvertAll(i => i.ToString()).ToArray()));
Console.ReadKey();
}
【问题讨论】:
-
试试
List<int> localNumbers = numbers.ToList();,这样你就可以创建一个副本,而不是分配和改变同一个列表。
标签: c# list class console-application