在 C# 中,可以通过以下语法初始化数组
string[]arr = {"text1","text2"}; // this works
为什么以下不起作用
string[]arr1;
arr1={"phrase1","phrase2"};//Does not compile.
string[] arr = { "text1", "text2" };
这是有效的,因为这是一种仅在首次初始化数组变量时才允许的特殊语法(我个人什至不知道它存在)。
如果你想稍后将一个新数组分配给一个变量,你需要说new
:
arr = new string[] { "text1", "text2" };
你也可以说只是new []
,编译器会为你找出类型。
根据 C# 规范,第二种语法是错误的:http: //msdn.microsoft.com/en-us/library/aa664573%28v=vs.71%29.aspx
检查该链接以及有关如何初始化数组的更多示例: 所有可能的 C# 数组初始化语法
这都是关于分配内存的。第一个是缩写:
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.