【问题标题】:What is the proper method of defining variables?定义变量的正确方法是什么?
【发布时间】:2015-11-11 20:24:09
【问题描述】:

为什么要定义这个

int[] array = new int[] { 1, 2, 3 };

什么时候可以这样定义?

int[] array = {1, 2, 3};

有什么想法吗?

【问题讨论】:

  • 能否请您解释一下初学者可以理解的内容?
  • 语法糖只是编译器提供的功能,允许您以更简单/更短的方式编写内容。实际编译的代码和你的第二个选项类似
  • 基本上,他们做同样的事情,选择你最喜欢的
  • 另一种选择:var array = new [] {1,2,3}; 他们都做同样的事情。

标签: c#


【解决方案1】:

想冒险回答这个问题,但是..

$12.6 起 C# 5.0 Language Spec 中的数组初始值设定项;

使用数组初始值设定项的上下文决定了类型 正在初始化的数组。在数组创建表达式中, 数组类型紧接在初始化器之前,或者从 数组初始值设定项中的表达式。在字段或变量中 声明,数组类型是字段或变量的类型 宣布。在字段或变量中使用数组初始值设定项时 声明,如:

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”

我还必须在 Programming.SE 中写下 Anthony Pegram 的 lovely comment

到最后,这一切都只是电的合成糖。

【讨论】:

  • 我正在寻找这种答案。谢谢老哥!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-05
  • 2019-10-31
相关资源
最近更新 更多