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
的值吗?
它将是 {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#新操作bug?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45778875/