为啥对 C# 数组使用“新”语法?
Posted
技术标签:
【中文标题】为啥对 C# 数组使用“新”语法?【英文标题】:Why use the "new" syntax for a C# array?为什么对 C# 数组使用“新”语法? 【发布时间】:2021-03-22 18:28:09 【问题描述】:我从this question 看到,在 C# 中初始化数组有四种允许的方式。取自已接受的答案:
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
链接的答案表明,除了第三个之外,您还可以使用var
关键字使上述表达式更简洁:
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
我的问题是:您为什么希望对数组使用 new
语法?使用 var array = new string[] "A", "B"
代替 string[] array = "A" , "B"
是否有任何性能优势?
【问题讨论】:
也许我不知道哪些数据会添加到我的数组中。string[] array = "A" , "B" ;
仍然是using new
under the hood
在你的例子中,没有优势,这就是他们做出改变的原因,在没有new
的情况下初始化它。
通常当一种语言有多种方法来实现相同的目标时,更简单的形式会在后面出现。不要指望 性能 差异,而只是 开发人员生产力 差异。
这并不是真正的优势/劣势,首先是new
,然后是更新的c#版本,开发人员想,为什么我们不应该从数组初始化中删除new
关键字(为了简单/代码更少),然后他们将其删除。就是这样。
【参考方案1】:
因为new
你可以指定数组类型,即你有这个代码
var array = new[] 1, 3, 5
这将是 int,但你希望它是 byte
的数组,所以你只能用 new 来做。你也可以将数组声明为类字段string[] array
,在构造函数的某处对其进行初始化,所以你只会看到array = "A", "B"
,这不清楚
【讨论】:
是的,但正如我所说,int[] 和同一个数组的新声明可以在完全不同的代码位置,你没有涵盖这个例子——假设你在开头定义了你的数组该文件和您的构造函数位于第 10000 行。 你“根本”无法确定这个问题的答案。因为原因可能因情况和代码而异以上是关于为啥对 C# 数组使用“新”语法?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能在继承属性中为封闭的泛型使用 C# 语法,但 CLR 语法很好
调用方法并将返回值分配给数组时,为啥C#在调用方法时使用数组引用?
C# Excel SQL语法问题 为啥union 可以用?INTERSECT不能用?谢谢,请指教。