是否可以创建一个空数组而不指定大小?
例如,我创建了:
String[] a = new String[5];
我们可以创建上面的字符串数组没有大小?
是否可以创建一个空数组而不指定大小?
例如,我创建了:
String[] a = new String[5];
我们可以创建上面的字符串数组没有大小?
当前回答
String [] a = new String [0];
或简称:
String [] a = {};
现在的首选方式是:
var a = Array.Empty<string>();
我写了一个短的正则表达式,你可以在Visual Studio中使用,如果你想替换零长度分配,例如新字符串[0]。 在Visual Studio中打开正则表达式选项使用查找(搜索):
新[][a-zA-Z0-9] + \ [0 \]
现在查找全部或F3(查找下一个)并将所有替换为Array.Empty<…>()!
其他回答
如果要使用一个事先不知道其大小的集合,有比数组更好的选择。
使用List<string>代替-它将允许您根据需要添加任意数量的项,如果您需要返回一个数组,请在变量上调用ToArray()。
var listOfStrings = new List<string>();
// do stuff...
string[] arrayOfStrings = listOfStrings.ToArray();
如果你必须创建一个空数组,你可以这样做:
string[] emptyStringArray = new string[0];
你可以:
string[] a = { String.Empty };
注意:OP意味着不需要指定大小,而不是使数组无大小
String [] a = new String [0];
或简称:
String [] a = {};
现在的首选方式是:
var a = Array.Empty<string>();
我写了一个短的正则表达式,你可以在Visual Studio中使用,如果你想替换零长度分配,例如新字符串[0]。 在Visual Studio中打开正则表达式选项使用查找(搜索):
新[][a-zA-Z0-9] + \ [0 \]
现在查找全部或F3(查找下一个)并将所有替换为Array.Empty<…>()!
在. net 4.6中,首选的方法是使用一个新的方法Array。空:
String[] a = Array.Empty<string>();
实现很简洁,使用了泛型类中的静态成员在。net中的行为:
public static T[] Empty<T>()
{
return EmptyArray<T>.Value;
}
// Useful in number of places that return an empty byte array to avoid
// unnecessary memory allocation.
internal static class EmptyArray<T>
{
public static readonly T[] Value = new T[0];
}
(为了清晰起见,删除了与合同相关的代码)
参见:
数组中。参考源上的空源代码 Array.Empty<T>()简介 Marc Gravell - Allocaction,分配,分配-我最喜欢的关于微小隐藏分配的帖子。
你可以使用数组。空方法(至少在。net Core中)
string ToCsv(int[] myArr = null) { // null by default
// affect an empty array if the myArr is null
myArr ??= Array.Empty<int>();
//... do stuff
string csv = string.Join(",", myArr);
return csv;
}