【问题标题】:C# declare empty string arrayC# 声明空字符串数组
【发布时间】:2013-05-25 21:57:37
【问题描述】:

我需要声明一个空字符串数组,我正在使用此代码

string[] arr = new String[0]();

但我收到“预期方法名称”错误。

怎么了?

【问题讨论】:

  • 为什么需要一个空数组?你想做什么?
  • @MrT。与问题无关。
  • @James - 也许有更优雅的方式来做他想做的任何事情。
  • @aquanat - 虽然答案已被接受,但我不知道您的代码或其背后的逻辑,但我谦虚地建议您不要返回空数组而是返回 null 并从调用中检查返回值是否为空的函数。我认为它会更加优雅、可读和高效。
  • 您不想返回 null 的原因是该方法的使用者必须检查 null。例如,该方法的使用者可以将返回的值放在 foreach 中,如果返回一个空数组,则没有问题。但是,如果返回 null,则在迭代返回值之前必须检查是否为 null

标签: c# arrays string


【解决方案1】:

试试这个

string[] arr = new string[] {};

【讨论】:

  • 谢谢大家...不要问我为什么,但唯一的办法是:string[] arr = new String[0] as string[];
  • Atish 的方法有效并消除了 Visual Studio 的抱怨,即如果我在 if 语句中分配变量时使用未初始化的变量
  • 其他选项是c# Array.Empty<string>()
【解决方案2】:

你的语法错误:

string[] arr = new string[]{};

string[] arr = new string[0];

【讨论】:

  • 为什么在你的例子中字符串都是大写的而不是大写的?
  • @newStackExchangeInstance,刚刚从问题中“按原样”复制了代码。这两行都编译得很好,尽管我同意遵循一种风格更好。
【解决方案3】:

如果您使用的是 .NET Framework 4.6 及更高版本,它们有一些您可以使用的新语法:

using System;  // To pick up definition of the Array class.

var myArray = Array.Empty<string>();

【讨论】:

  • 好招!它也适用于 IList : IList x = Array.Empty();
【解决方案4】:

你可以试试这个

string[] arr = {};

【讨论】:

    【解决方案5】:

    数组的构造函数是不同的。以下是一些制作空字符串数组的方法:

    var arr = new string[0];
    var arr = new string[]{};
    var arr = Enumerable.Empty<string>().ToArray()
    

    (抱歉,在手机上)

    【讨论】:

      【解决方案6】:

      您的语法无效。

      string[] arr = new string[5];
      

      这将创建arr,一个引用的字符串数组,其中该数组的所有元素都是null。 (因为字符串是引用类型

      此数组包含从arr[0]arr[4] 的元素。 new 运算符用于创建数组并将数组元素初始化为其默认值。在这个例子中,所有的数组元素都被初始化为null

      Single-Dimensional Arrays (C# Programming Guide)

      【讨论】:

      • 谢谢大家...不要问我为什么,但唯一的办法是:string[] arr = new String[0] as string[];
      【解决方案7】:

      那些卷曲的东西有时很难记住,这就是为什么有优秀的documentation

      // Declare a single-dimensional array  
      int[] array1 = new int[5];
      

      【讨论】:

      • 无需编辑此答案,因为答案服务于一般目的,而不是每个说的具体问题。它回答了“声明和初始化数组的语法是什么”,并且是我发布的链接的引用。 OP 如果愿意,可以将int 替换为string
      【解决方案8】:

      如果你必须创建一个空数组,你可以这样做:

      string[] arr = new string[0];
      

      如果您不知道大小,那么您也可以使用List&lt;string&gt; 以及喜欢

      var valStrings = new List<string>();
      
      // do stuff...
      
      string[] arrStrings = valStrings.ToArray();
      

      【讨论】:

      • 我很抱歉。我不小心用错误的编辑毁了你的帖子。
      【解决方案9】:

      以下应该可以正常工作。

      string[] arr = new string[] {""};
      

      【讨论】:

      • 这不是一个空数组,因为它包含一个空字符串元素。 arr.Length() 将返回 1。
      • 这可能不是一个空数组,但我发现这个答案为空是安全的。谢谢! 1 起来!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-22
      • 1970-01-01
      • 1970-01-01
      • 2014-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多