为了账号安全,请及时绑定邮箱和手机立即绑定

所有可能的数组初始化语法

所有可能的数组初始化语法

C#
红颜莎娜 2019-06-17 15:11:21
所有可能的数组初始化语法用C#可以实现的数组初始化语法是什么?
查看完整描述

3 回答

?
慕田峪9158850

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 


查看完整回答
反对 回复 2019-06-17
?
哔哔one

TA贡献1854条经验 获得超8个赞

C#中的数组创建语法是表达是:

new int[3]new int[3] { 10, 20, 30 }new int[] { 10, 20, 30 }new[] { 10, 20, 30 }

在第一种情况下,大小可以是任何非负积分值,并且数组元素被初始化为默认值。

在第二种情况下,大小必须是常数,给定的元素数必须匹配。必须有从给定元素到给定数组元素类型的隐式转换。

在第三种情况下,元素必须隐式转换为元素类型,大小由给定的元素数决定。

在第四种类型中,数组元素的类型是通过计算具有类型的所有给定元素中的最佳类型(如果存在的话)来推断的。所有元素都必须隐式转换为该类型。大小由给定的元素数决定。这个语法是在C#3.0中引入的。

还有一种语法只能在声明中使用:

int[] x = { 10, 20, 30 };

元素必须隐式转换为元素类型。大小由给定的元素数决定。

没有一个一刀切的指南

我请您参阅C#4.0规范,第7.6.10.4节“数组创建表达式”。


查看完整回答
反对 回复 2019-06-17
?
一只名叫tom的猫

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({})

    不可编译


查看完整回答
反对 回复 2019-06-17
  • 3 回答
  • 0 关注
  • 384 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信