3 回答
TA贡献1794条经验 获得超7个赞
这些是简单数组的当前声明和初始化方法。
string[] array = new string[2]; // creates array of length 2, default values
string[] array = new string[] { "A", "B" }; // creates populated array of length 2
string[] array = { "A" , "B" }; // creates populated array of length 2
string[] array = new[] { "A", "B" }; // created populated array of length 2
注意,还有其他获取数组的技术,例如LinqToArray()扩展到IEnumerable<T>.
还请注意,在上面的声明中,前两个可以替换string[]在左边var(C#3+),因为右边的信息足以推断出正确的类型。第三行必须按显示方式编写,因为仅靠数组初始化语法还不足以满足编译器的要求。第四种方法也可以使用推理。因此,如果您对整个简洁的事情感兴趣,那么上面的内容可以写成
var array = new string[2]; // creates array of length 2, default values
var array = new string[] { "A", "B" }; // creates populated array of length 2
string[] array = { "A" , "B" }; // creates populated array of length 2
var array = new[] { "A", "B" }; // created populated array of length 2
TA贡献1854条经验 获得超8个赞
new int[3]new int[3] { 10, 20, 30 }new int[] { 10, 20, 30 }new[] { 10, 20, 30 }
int[] x = { 10, 20, 30 };
没有一个一刀切的指南
TA贡献1906条经验 获得超3个赞
非空数组
var data0 = new int[3]
var data1 = new int[3] { 1, 2, 3 }
var data2 = new int[] { 1, 2, 3 }
var data3 = new[] { 1, 2, 3 }
var data4 = { 1, 2, 3 }
是不可编译的。使用 int[] data5 = { 1, 2, 3 }
相反。
空阵列
var data6 = new int[0]
var data7 = new int[] { }
var data8 = new [] { }
和 int[] data9 = new [] { }
是不可编译的。 var data10 = { }
是不可编译的。使用 int[] data11 = { }
相反。
作为一种方法的论证
var
Foo(new int[2])
Foo(new int[2] { 1, 2 })
Foo(new int[] { 1, 2 })
Foo(new[] { 1, 2 })
Foo({ 1, 2 })
不可编译 Foo(new int[0])
Foo(new int[] { })
Foo({})
不可编译
- 3 回答
- 0 关注
- 384 浏览
添加回答
举报