public class ListTest
{
public List<int> MyList;
public ListTest()
{
MyList = new List<int> { 1, 2, 3 };
}
}
var listTest = new ListTest()
{
MyList = {4,5,6}
};
您知道
listTest.MyList
的值(value)吗?这将是
{1,2,3,4,5,6}
有人可以解释吗?
最佳答案
这不是错误,而是{ ... }
初始化程序语法在C#中如何工作的结果。
该语法可用于具有Add()
方法的任何集合类型。它所做的只是用对Add()
方法的调用序列替换括号中的序列。
在您的示例中,您首先在构造函数中使用前三个元素初始化值。然后,稍后将{ 4, 5, 6 }
分配给属性时,它将再次使用这些值调用Add()
。
如果要清除以前的内容,则需要使用new
运算符进行分配,如下所示:
var listTest = new ListTest()
{
MyList = new List<int> {4,5,6}
};
通过包括
new
运算符,您将获得一个全新的对象以及Add()
值。关于C#新的操作错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45778875/