【发布时间】:2014-09-03 19:10:21
【问题描述】:
在 C# 中,这种语法对数组初始化起作用的确切原因是什么:
string[] strArray = {"foo1", "foo2"}; //works
但不是为了分配:
strArray = {"foo1", "foo2"}; //does not work, throws "; expected" exception
【问题讨论】:
-
旁注:第二个适用于 VB.NET。在 C# 中,您需要
strArray = new []{"foo1", "foo2"};。我认为原因是{引入了一个带有这个无效语句的新范围:"foo1", "foo2"没有;。 -
它不起作用,因为数组是固定长度大小,因此只能在初始化或每个指针
strArray[0] = "foo1";strArray[1] = "foo2";的指针时完全分配。您试图在第二个上分配数组而不是指针本身,设置数组需要新的初始化,所以new []{"foo1", "foo2"}; -
只有语言设计者才能确定为什么 C# 不支持数组赋值的数组初始化语法。
-
@Franck 这没有意义。两个代码都将在堆上分配数组。我的意思是,“字符串[] strArray;”默认为空。