c# – “是” – 类型的运算符

c# – “是” – 类型的运算符,第1张

概述我使用“is”运算符来查找某个类: for(int i=0; i<screens.Count; i++){ if(screen is ScreenBase){ //do something... }} 这很好用,特别是当它找到任何继承自ScreenBase的类而不是ScreenBase的基类时. 当我只知道Type并且不想实例化类时,我想做同样的事情: Type screenTy 我使用“is”运算符来查找某个类:
for(int i=0; i<screens.Count; i++){  if(screen is ScreenBase){    //do something...  }}

这很好用,特别是当它找到任何继承自ScreenBase的类而不是ScreenBase的基类时.

当我只知道Type并且不想实例化类时,我想做同样的事情:

Type screenType = GetType(line);if (screenType is ScreenBase)

但是这个比较产生了一个警告,因为它将与“类型”类进行比较.

我知道的唯一选择是与== typeof进行比较,但这只会测试确切的类型而不是继承的类型.
有没有办法获得类似“is”运算符的类似行为,但对于Type-class描述的类型?

解决方法 如果您想具体了解它是否来自类型,请使用 Type.IsSubclassOf().这不适用于接口.
Type screenType = GetType(line);if (screenType.IsSubclassOf(typeof(ScreenBase))){    // do stuff...}

否则,如果您想知道是否可以将类型分配给某个类型的变量,请使用Type.IsAssignableFrom().这将适用于接口.

Type screenType = GetType(line);if (typeof(ScreenBase).IsAssignableFrom(screenType)) // note the usage is reversed{    // do stuff...}

请注意,您不一定需要类型对象来确定这一点,您可以使用Type.IsInstanceOfType()对象的实例执行此 *** 作.它的行为或多或少类似于IsAssignableFrom().

if (typeof(ScreenBase).isinstanceOfType(line)) // note the usage is reversed{    // do stuff...}
总结

以上是内存溢出为你收集整理的c# – “是” – 类型的运算符全部内容,希望文章能够帮你解决c# – “是” – 类型的运算符所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1239098.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存