如何检测集合中是否包含特定类型的实例?

发布于 2024-08-26 03:26:54 字数 295 浏览 4 评论 0原文

假设我创建像这样的集合

Collection<IMyType> coll;

,然后我有许多 IMyTypem 的实现,例如 T1、T2、T3...

然后我想知道集合 coll 是否包含 T1 类型的实例。所以我想写一个像

public bool ContainType( <T>){...}

这里这样的方法,参数应该是类类型,而不是类实例。 对于这种问题,如何编写代码呢?

Suppose I create collection like

Collection<IMyType> coll;

Then I have many implelentations of IMyTypem like, T1, T2, T3...

Then I want know if the collection coll contains a instance of type T1. So I want to write a method like

public bool ContainType( <T>){...}

here the param should be class type, not class instance.
How to write code for this kind of issue?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

懷念過去 2024-09-02 03:26:54

你可以这样做:

 public bool ContainsType(this IEnumerable collection, Type type)
 {
      return collection.Any(i => i.GetType() == type);
 }

然后像这样调用它:

 bool hasType = coll.ContainsType(typeof(T1));

如果你想查看一个集合是否包含可转换为指定类型的类型,你可以这样做:

bool hasType = coll.OfType<T1>().Any();

但这是不同的,因为如果 coll 包含任何子类,它将返回 true T1也一样。

You can do:

 public bool ContainsType(this IEnumerable collection, Type type)
 {
      return collection.Any(i => i.GetType() == type);
 }

And then call it like:

 bool hasType = coll.ContainsType(typeof(T1));

If you want to see if a collection contains a type that is convertible to the specified type, you can do:

bool hasType = coll.OfType<T1>().Any();

This is different, though, as it will return true if coll contains any subclasses of T1 as well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文