【发布时间】:2011-01-12 06:58:42
【问题描述】:
我特别考虑了一个满足集合合同的集合,但我认为这个问题可以适用于任何类型。 .NET 框架中是否存在防止空条目的集合?我想要的具体行为是这样的:
var set = new HashSet<object>();
bool added = set.Add(null);
Console.WriteLine(added); // prints "False"
这不是内置HashSet<T> 的行为。是否有任何集合具有这种(或类似)行为,或者我最好自己滚动?如果是后者,最好的方法是什么?我应该直接从HashSet<T> 继承还是直接包装它?
编辑:要清楚,这只是无聊的想知道。主要是因为我想不出任何理由想要允许null 进入一组对象。我对此没有任何特殊需要。
【问题讨论】:
-
不要修复它,它只是隐藏代码中的错误。在调用 Add() 方法之前使用显式 if() 语句。如果你真的必须使用扩展方法。
-
@nobugz +1。这是个好建议。这样做的原因绝对是不是修补损坏的代码。
标签: c# .net generics collections