如果我有一个数组或通用列表甚至字典,我想先做一些检查以查看该对象是否有效,我是否:
我是否检查null然后检查计数或检查计数是否足够好而且我不需要先检查是否为空?
我对OOP和C#的问题通常是知道何时检查空值与仅计数集合。如果它为null,那么如果它为null则返回什么,以免你尝试通过属性作为示例返回一个itemin集合。
答案 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。