首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C#中对泛型使用`is`运算符

在C#中对泛型使用`is`运算符
EN

Stack Overflow用户
提问于 2010-02-20 04:09:18
回答 5查看 8.4K关注 0票数 22

我想做这样的事情:

代码语言:javascript
复制
class SomeClass<T>
{
   SomeClass()
   {
        bool IsInterface = T is ISomeInterface;
   }
}

对于这样的事情,最好的方法是什么?

注意:我并不打算用where来约束T,但我希望我的代码能够知道T实现了什么类型的接口。我希望我不需要构造一个T

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-02-20 04:12:56

我不认为您可以使用is运算符来执行此操作。但是你可以使用IsAssignableFrom:

代码语言:javascript
复制
bool IsInterface = typeof(ISomeInterface).IsAssignableFrom(typeof(T));
票数 30
EN

Stack Overflow用户

发布于 2010-02-20 04:14:20

您可以使用IsAssignableFrom

代码语言:javascript
复制
  class SomeClass<T>
  {
     SomeClass()
     {
        bool IsIComparable = typeof(IComparable).IsAssignableFrom(typeof(T));
     }
  } 
票数 2
EN

Stack Overflow用户

发布于 2010-02-20 04:14:30

代码语言:javascript
复制
bool IsInterface = typeof(ISomeInterface).IsAssignableFrom(typeof(T))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2299226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档