【问题标题】:differences between array initialization and assignment syntax in C#C#中数组初始化和赋值语法的区别
【发布时间】: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;”默认为空。

标签: c# arrays


【解决方案1】:

您需要指定数组的大小。当您在定义数组时准确地提及数组的项目时,数组的大小将自动定义。但是当你想稍后给它值时,你需要在创建它时指定数组的大小。

string[] strArray = new string[number]; //number is size of your array.

因此,通过这种方式,您可以在以后随时评估此数组。

strArray = {"foo1","foo2"};

【讨论】:

    猜你喜欢
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 2023-03-23
    • 2020-11-28
    • 2010-10-01
    • 1970-01-01
    • 2011-01-19
    相关资源
    最近更新 更多