C# 在C中使用新数组和

C# 在C中使用新数组和,c#,arrays,.net,C#,Arrays,.net,在声明新数组时使用关键字new与不使用它有什么区别?我在互联网上看到了类似的东西,但没有完全理解其中的区别: 使用此语法在赋值右侧添加新关键字。这仅在数组声明期间可能发生 例如: string[] names = {"Joe", "Sally", "Thomas"}; string[] names = new string[] {"Joe", "Sally", "Thomas"

在声明新数组时使用关键字new与不使用它有什么区别?我在互联网上看到了类似的东西,但没有完全理解其中的区别: 使用此语法在赋值右侧添加新关键字。这仅在数组声明期间可能发生

例如:

string[] names = {"Joe", "Sally", "Thomas"};

string[] names = new string[] {"Joe", "Sally", "Thomas"};

不同之处在于新字符串[]

我的意思是,它们的作用完全相同:

string[] names = new string[3] {"Joe", "Sally", "Thomas"};
string[] names = new string[] {"Joe", "Sally", "Thomas"};
string[] names = new [] {"Joe", "Sally", "Thomas"};
string[] names = {"Joe", "Sally", "Thomas"};

现在,考虑使用VAR.这个作品:

var names = new string[3] {"Joe", "Sally", "Thomas"};
var names = new string[] {"Joe", "Sally", "Thomas"};
var names = new [] {"Joe", "Sally", "Thomas"};
但这并不是:

var names = {"Joe", "Sally", "Thomas"};

请参阅。

编译代码后,实际上没有任何差异。您应该使用哪一种取决于您的偏好

我经常使用它来比较代码的原始版本和编译版本,如下所示

在这种情况下,编译器能够根据变量声明字符串[]names1判断新数组应该是什么类型

您的原始代码:

字符串[]名称1={Joe,Sally,Thomas}; 字符串[]名称2=新字符串[]{Joe,Sally,Thomas}; 汇编后:

字符串[]数组=新字符串[3]; 数组[0]=Joe; 数组[1]=Sally; 数组[2]=Thomas; 字符串[]数组2=新字符串[3]; array2[0]=乔; array2[1]=萨利; array2[2]=托马斯;
这回答了你的问题吗?没有区别;C语言语法(在以后的版本中越来越流行)只允许您在更详细的版本中增加的额外位没有什么价值时使用更紧凑/简洁的版本。