为什么要定义
nrow == ncol == 1
什么时候可以这样定义?
int[] array = new int[] { 1, 2, 3 };
有什么想法吗?
答案 0 :(得分:1)
感觉喜欢冒险回答但是......
来自C# 5.0 Language Spec的$ 12.6数组初始值设定项;
使用数组初始值设定项的上下文决定了类型 正在初始化的数组。在数组创建表达式中, 数组类型紧接在初始化程序之前,或从中推断出来 数组初始值设定项中的表达式。在字段或变量中 声明,数组类型是字段或变量的类型 声明。在字段或变量中使用数组初始值设定项时 声明,例如:
int[] a = {0, 2, 4, 6, 8};
它只是简单的简写,用于创建等效的数组 表达强>:
int[] a = new int[] {0, 2, 4, 6, 8};
正如其他人所说,这可以被称为这个初始化器的语法糖。
但为什么?!为什么c#的创建者需要这个"句法 糖"
Wikipedia page也说明了这一点。
在计算机科学中,语法糖是编程中的语法 设计为以便于阅读或表达的语言。 它使语言"更甜美"供人类使用:可以表达的东西 更清楚,更简洁,或者某些人可能采用的另类风格 喜欢强>
那么,正确的方法是什么? 那么,这个问题是主观的。某些可能首选,某些可能首选,或者某些可能更喜欢var array = new[] { 1, 2, 3 };
根据您的示例。 var
也是C#3.0版本的语法糖。但是有了这个,你就不能写var array = { 1, 2, 3 };
,因为它可以使解析器复杂化为Eric Lippert noted。
顺便说一下,您可以在此处找到All possible C# array initialization syntaxes,在Programming.SE中找到What is the difference between “Syntax” and “Syntactic Sugar”。
此外,我必须在Anthony.Sgram编写此lovely comment编程。
最后,它只是电力上的合成糖。