假设我创建了类似的集合
Collection<IMyType> coll;
Run Code Online (Sandbox Code Playgroud)
然后我有许多实现,IMyTypem如T1,T2,T3 ...
然后我想知道集合coll是否包含T1类型的实例.所以我想写一个像这样的方法
public bool ContainType( <T>){...}
Run Code Online (Sandbox Code Playgroud)
这里param应该是类类型,而不是类实例.如何为这类问题编写代码?
你可以做:
public bool ContainsType(this IEnumerable collection, Type type)
{
return collection.Any(i => i.GetType() == type);
}
Run Code Online (Sandbox Code Playgroud)
然后把它称为:
bool hasType = coll.ContainsType(typeof(T1));
Run Code Online (Sandbox Code Playgroud)
如果要查看集合是否包含可转换为指定类型的类型,您可以执行以下操作:
bool hasType = coll.OfType<T1>().Any();
Run Code Online (Sandbox Code Playgroud)
但是,这是不同的,因为如果coll包含T1的任何子类,它将返回true.
| 归档时间: |
|
| 查看次数: |
2577 次 |
| 最近记录: |