【发布时间】:2014-07-02 18:13:59
【问题描述】:
我想知道是否有任何类似 set 的只读接口在 C# 中声明 Contains 方法。我不想只实现ISet 接口,因为它有太多不必要的方法。
我的想法实现是这样的:
public class PositiveInt : IReadOnlySet<Int32>
{
public bool Contains(Int32 n){
return n > 0;
}
}
public class CraEmployeeNames:IReadOnlySet<String>
{
public bool Contains(String n){
return !String.IsNullOrWhiteSpace(n) && n.StartsWith("Cra");
}
}
我可以定义我自己的IReadOnlySet,但要先确保没有内置的。
【问题讨论】:
-
你的意思是ReadOnlyCollection<T>还是readonly关键字
-
readonly 关键字在这里有点用处不是吗?
-
如果您只需要
Contains方法,您可以使用Func<T, bool>。 -
同意,但是当您不知道 X 是什么时建议使用只读关键字...?
-
遗憾的是,他们没有创建
IReadOnlySet<T>,如果他们这样做了,它可能会包含您抱怨必须实施的绝大多数方法。所以创建一个IContainsCollection<T> : ICollection<T> { Contains(T); },或者部分实现ISet<T>,其余部分使用NotImplementedExceptions,或者创建IContains<T> { Contains(T); }等等。你想做什么?如果您回答这个问题,我们可以明智地提出建议
标签: c#