使用new来初始化c#数组与使用literal初始化

7 c# arrays new-operator

简单简短问题究竟有什么区别

int[] intarray = new int[2]{1,2};
Run Code Online (Sandbox Code Playgroud)

int[] intarray2 = {4,5,6};
Run Code Online (Sandbox Code Playgroud)

就像"新"究竟做什么一样?你真的需要它吗?

我猜它只是分配内存.....或其他什么?对不起,我对C#完全陌生,并且在我学习它时会有疑问.

Dar*_*rov 11

第二个是数组初始化语法.这只是语法糖.两者都用它们各自的值初始化新的数组实例,第一个是更明确的(你重复它是右边的两个元素的整数数组,这从后面的内容非常明显,因此编译器能够推断出这些信息).

所以以下是等价的:

int[] array = new int[2] { 1, 2 };
Run Code Online (Sandbox Code Playgroud)

和:

int[] array = { 1, 2 };
Run Code Online (Sandbox Code Playgroud)

和:

var array = new[] { 1, 2 };
Run Code Online (Sandbox Code Playgroud)

在所有情况下,我们都在初始化一个包含两个整数的数组.我个人更喜欢最后一种语法.

  • [Syntactic sugar](http://en.wikipedia.org/wiki/Syntactic_sugar)是内置于语言中并简化语法的东西,但实际上并不存在于已编译的程序集中.当您查看生成的IL时,首先会有更明确的语法.但是,如果我们让编译器完成工作而不是我们,那么编写它时会更好.为什么要使用第一种语法?为什么在右边重复int?为什么要重复数组的大小?当我们简单地写"{1,2}"时,这一切都非常明显.由此我们知道有两个元素,类型是int. (2认同)