假设我有一个类似的函数:
void myFunc(List<AClass> theList)
{
string[] stuff = new string[theList.Count];
}
我传递了一个空列表。
stuff 会是空指针吗?或者它会是一个指向内存中未初始化的随机位置的指针?
它将创建一个空数组对象。这仍然是一个完全有效的对象 - 并且在内存中占用非零空间。它仍然会知道自己的类型和计数 - 它只是不会有任何元素。
空数组通常可用作不可变的空集合:您可以无限地重用它们;数组本质上是可变的,但仅就其本身而言是可变的elements...这里我们没有需要改变的元素!由于数组的大小不可调整,因此空数组与 .NET 中的对象一样不可变。
请注意,使用空数组而不是空引用通常很有用:返回集合的方法或属性几乎应该always返回一个空集合而不是空引用,因为它提供了一致性和统一性 - 而不是使every调用者检查是否无效。如果您想避免多次分配,可以使用:
public static class Arrays<T>
{
private static readonly T[] empty = new T[0];
public static readonly T[] Empty { get { return empty; } }
}
然后你就可以使用:
return Arrays<string>.Empty;
(或其他)当您需要使用对特定类型的空数组的引用时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)