我想知道是否有任何类似set的readonly接口在C#中声明了Contains
方法。我不想只实现ISet
接口,因为它有太多不必要的方法。
我的想法实现就像thi:
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
,但希望确保在我之前没有内置的。{/ p>
答案 0 :(得分:4)
不,C#中没有IReadOnlySet<T>
接口。根据您所描述的需求,我认为您应该创建自己的IContains<T>
界面。
public interface IContains<T>
{
bool Contains(T item);
}
请注意,这不能添加到List<T>
或HashSet<T>
等现有集合中,并且不包含任何其他类似集合的操作,如Count
或枚举。您可以像以下一样使用它:
public void TestContains<T>(IContains<T> container, T item)
{
if (container.Contains(item))
{
//something
}
else
{
//something else
}
}
答案 1 :(得分:3)