C# 声明空字符串数组

Posted

技术标签:

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

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

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

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

怎么了?

【问题讨论】:

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

以上是关于C# 声明空字符串数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中声明具有固定数量的固定大小字符串的数组?

c#中的字符串拆分返回一个空数组

WebForm中c#中如何将字符串声明为一个变量或控件名

ORACLE怎样判断一个串中包含字串,如C#中的contain

C#:如何将多个字符串拆分为二维数组?

C# 字符串数组 orderBy 重音字符问题