假设,我们有一个非常简单的类:
class ObjectList { public ListList1 { get; } = new List (); public List List2 { get; set; } }
我们想要创建这个类的实例:
ObjectList objectList = new ObjectList { List1 = { "asdf", "qwer" }, List2 = new List{ "zxcv", "1234" } };
所以,在List2的情况下,没关系,使用"="我们设置属性.但是在List1的情况下,它看起来像我们设置属性,但实际上,我们假设在之前设置它,在这里我们只设置值.它与数组初始化非常相似:
string[] arr = { "val1", "val2" }
为什么C#在这里使用这种令人困惑的语法?
编辑:我想我用C#6.0语法让很多观众感到困惑,但这不是重点.让我们使用旧的C#3.0和.net 2.0.并且让我们添加更多乐趣,并从头开始添加一些值("1"和"2")到列表中,正如Jeff Mercado建议的那样:
class Program { static void Main(string[] args) { ObjectList objectList = new ObjectList { List1 = { "asdf", "qwer" }, }; } } class ObjectList { List_List1 = new List () { "1", "2" }; public List List1 { get { return _List1; } } }
它显示了相同的奇怪语法.最后我列出了{"1","2","asdf","qwer"},这更令人困惑.我可以期待这一点.