C#列表定义,括号与花括号
我刚才注意到,当你在c#中声明一个List
,你可以在最后添加括号或花括号。
List myList = new List(); List myList2 = new List{};
这两个列表似乎都具有相同的function。 用括号或花括号声明它们是否有任何实际差异?
花括号{ }
的使用称为集合初始化程序 。 对于实现IEnumerable
的类型,将代表您正常调用Add
方法:
List myList2 = new List () { "one", "two", "three" };
允许使用空集合初始值设定项:
List myList2 = new List () { };
并且,在实现初始化程序时,您可以省略默认构造函数的括号()
:
List myList2 = new List { };
您可以为类属性执行类似的操作,但之后将其称为对象初始值设定项 。
var person = new Person { Name = "Alice", Age = 25 };
可以将这些结合起来:
var people = new List { new Person { Name = "Alice", Age = 25 }, new Person { Name = "Bob" } };
C#3.0中引入的这种语言function还支持初始化匿名类型 ,这在LINQ查询表达式中特别有用:
var person = new { Name = "Alice" };
它们也适用于数组,但您可以进一步省略从第一个元素推断出的类型:
var myArray = new [] { "one", "two", "three" };
初始化多维数组就是这样的:
var myArray = new string [,] { { "a1", "b1" }, { "a2", "b2" }, ... };
第一个版本初始化一个空列表。 第二个版本用于使用值初始化列表。 如果没有至少一个T
实例,您将不会或不应该看到第二个版本。
所以你可以这样做:
List Foo = new List {"foo", "bar"};
要么
List Foo = new List {SomeInstancesOfT};
在初始化对象时,这在许多地方都很有用。
请参阅https://msdn.microsoft.com/en-us/library/bb384062.aspx
它们有不同的语义。
List myList = new List ();
上面的行初始化了一个新的字符串列表,而()
是通过调用没有参数的构造函数来构建新对象的语法的一部分。
List myList2 = new List {};
上面的行使用{}
显示的元素初始化一个新的字符串列表。 所以,如果你做了List
您正在定义一个包含2个元素的新列表。 由于您在{}
未定义任何元素,因此将创建一个空列表。
但为什么第二行没有()
?
这是讨论的一部分,在这种情况下省略括号表示对默认构造函数的调用。 看看这个链接
简而言之 – 创建的对象没有区别。
但还有更多:你问的不是特定于List
问题 – 它是object
和Collection
初始化的问题。
看到这里 。
上述就是C#学习教程:C#列表定义,括号与花括号分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1017133.html