检查集合上的空值

时间:2009-11-24 21:53:40

标签: c#

如果我有一个数组或通用列表甚至字典,我想先做一些检查以查看该对象是否有效,我是否:

  1. 检查为空
  2. 只需检查someCollection.count> 0
  3. 两个
  4. 我是否检查null然后检查计数或检查计数是否足够好而且我不需要先检查是否为空?

    我对OOP和C#的问题通常是知道何时检查空值与仅计数集合。如果它为null,那么如果它为null则返回什么,以免你尝试通过属性作为示例返回一个itemin集合。

3 个答案:

答案 0 :(得分:2)

您无法检查空集合上的Count。

空集合和空集合是两个不同的东西。所以你应该检查两者,否则总是初始化你的集合,所以你永远不会遇到null问题。或者对于一个简单的解决方案,只需返回一个新的集合,然后让你的调用代码处理计数检查。

List<Type> someCollection = new List<Type();

if(someCollection == null)
    return new List<Type>();

答案 1 :(得分:1)

Count不适用于null对象。

以下是您可以使用的一些锅炉铭牌代码:

Debug.Assert(collection != null);
Debug.Assert(collection.Count > 0);
if (collection == null) {
    throw new ArgumentNullException("collection");
}
if (collection.Count == 0) {
    throw new ArgumentException("collection should have at least one member"); 
}

断言非常重要,应该由更多.Net开发人员实践。

早期崩溃可能是编写健壮代码的关键。如果有任何参数表明您正在编写的方法永远不会通过,那么在此时崩溃可能会更好,而不是将损坏的数据写入数据库。

您还需要一个强大的日志记录机制,以便您可以记录所有正在发生的令人讨厌的事情。

答案 2 :(得分:0)

当您可以控制这些集合的创建时,您可以通过 never 返回null来使您的API更易于使用。如果没有元素,只返回一个空集合。如果需要考虑性能,您可以创建一个静态实例并始终返回该实例,或者使用EmptyEnumerator