yog*_*esh 299 c# arrays initialization
是否可以在不指定大小的情况下创建空数组?
例如,我创建了:
String[] a = new String[5];
Run Code Online (Sandbox Code Playgroud)
我们可以创建没有大小的上面的字符串数组吗?
Ode*_*ded 403
如果你打算使用一个你不知道大小的集合,那么有比阵列更好的选择.
使用List<string>替代 - 它将允许您根据需要添加任意数量的项目,如果需要返回数组,请调用ToArray()变量.
var listOfStrings = new List<string>();
// do stuff...
string[] arrayOfStrings = listOfStrings.ToArray();
Run Code Online (Sandbox Code Playgroud)
如果必须创建一个空数组,则可以执行以下操作:
string[] emptyStringArray = new string[0];
Run Code Online (Sandbox Code Playgroud)
小智 172
试试这个:
string[] a= new string[] { };
Run Code Online (Sandbox Code Playgroud)
Kob*_*obi 91
在.Net 4.6中,首选方法是使用新方法Array.Empty:
String[] a = Array.Empty<string>();
Run Code Online (Sandbox Code Playgroud)
在实现简洁,使用泛型类的静态成员如何在.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];
}
Run Code Online (Sandbox Code Playgroud)
(为清晰起见,删除了代码合同相关代码
也可以看看:
Array.Empty 参考源上的源代码Array.Empty<T>()Mat*_*asG 33
您可以使用0的大小初始化它,但是当您知道大小时,您将不得不重新初始化它,因为您无法附加到数组.
string[] a = new string[0];
Run Code Online (Sandbox Code Playgroud)
小智 10
性能规则 CA1825:避免分配零长度数组。
规则说明:初始化零长度数组会导致不必要的内存分配。相反,通过调用 Array.Empty 方法来使用静态分配的空数组实例。
在你的情况下:
var a = Array.Empty<string>();
Run Code Online (Sandbox Code Playgroud)
声明没有大小的数组没什么意义.数组大小.声明特定大小的数组时,可以指定可以容纳内容的集合中可用的固定插槽数,并相应地分配内存.要向它添加内容,您无论如何都需要重新初始化现有数组(即使您正在调整数组大小,请参阅此主题).您想要初始化空数组的极少数情况之一是将数组作为参数传递.
如果你想在不知道它可能的大小时定义一个集合,那么数组不是你的选择,而是类似的东西List<T>.
也就是说,声明数组而不指定大小的唯一方法是使用大小为0的空数组.hemant和Alex Dn提供两种方式.另一个更简单的选择是:
string[] a = { };
Run Code Online (Sandbox Code Playgroud)
[ 括号内的元素应该可以隐式转换为定义的类型,例如string[] a = { "a", "b" }; ]
还是另一个:
var a = Enumerable.Empty<string>().ToArray();
Run Code Online (Sandbox Code Playgroud)
这是一种更具声明性的方式:
public static class Array<T>
{
public static T[] Empty()
{
return Empty(0);
}
public static T[] Empty(int size)
{
return new T[size];
}
}
Run Code Online (Sandbox Code Playgroud)
现在你可以打电话:
var a = Array<string>.Empty();
//or
var a = Array<string>.Empty(5);
Run Code Online (Sandbox Code Playgroud)
简单而优雅!
string[] array = {}
Run Code Online (Sandbox Code Playgroud)
string[] a = new string[0];
或简写:
string[] a = { };
现在首选的方式是:
var a = Array.Empty<string>();
我写了一个简短的正则表达式,如果你想替换零长度分配,你可以在 Visual Studio 中使用它,例如new string[0]. 在打开正则表达式选项的情况下在 Visual Studio 中使用查找(搜索):
new[ ][a-zA-Z0-9]+\[0\]
现在 Find All 或 F3 (Find Next) 并用 Array.Empty<…>() 替换 all !
| 归档时间: |
|
| 查看次数: |
487396 次 |
| 最近记录: |