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/

10-09 20:25