1

在 C# 中,可以通过以下语法初始化数组

string[]arr = {"text1","text2"}; // this works

为什么以下不起作用

string[]arr1;
arr1={"phrase1","phrase2"};//Does not compile. 
4

3 回答 3

8
string[] arr = { "text1", "text2" };

这是有效的,因为这是一种仅在首次初始化数组变量时才允许的特殊语法(我个人什至不知道它存在)。

如果你想稍后将一个新数组分配给一个变量,你需要说new

arr = new string[] { "text1", "text2" };

你也可以说只是new [],编译器会为你找出类型。

于 2013-10-09T00:27:14.143 回答
3

根据 C# 规范,第二种语法是错误的:http: //msdn.microsoft.com/en-us/library/aa664573%28v=vs.71%29.aspx

检查该链接以及有关如何初始化数组的更多示例: 所有可能的 C# 数组初始化语法

于 2013-10-09T00:26:22.277 回答
0

这都是关于分配内存的。第一个是缩写:

string[]arr = new string[]{"text1","text2"};

new所以编译器在同一个语句中知道使用关键字分配的元素数量。

第二个只是错误的语法。如果您想分两步完成:

string[]arr1; // defines array(pointer)
arr1=new string[]{"phrase1","phrase2"}; // again when `new` is used for dynamic memory allocation, the size is available.
于 2013-10-09T00:33:20.137 回答