c# – “是” – 类型的运算符
发布时间:2020-12-15 18:04:46 所属栏目:百科 来源:网络整理
导读:我使用“is”运算符来查找某个类: for(int i=0; iscreens.Count; i++){ if(screen is ScreenBase){ //do something... }} 这很好用,特别是当它找到任何继承自ScreenBase的类而不是ScreenBase的基类时. 当我只知道Type并且不想实例化类时,我想做同样的事情:
我使用“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进行比较,但这只会测试确切的类型而不是继承的类型. 解决方法
如果您想具体了解它是否来自类型,请使用
Type.IsSubclassOf() .这不适用于接口.
Type screenType = GetType(line); if (screenType.IsSubclassOf(typeof(ScreenBase))) { // do stuff... } 否则,如果您想知道是否可以将类型分配给某个类型的变量,请使用 Type screenType = GetType(line); if (typeof(ScreenBase).IsAssignableFrom(screenType)) // note the usage is reversed { // do stuff... } 请注意,您不一定需要类型对象来确定这一点,您可以使用 if (typeof(ScreenBase).IsInstanceOfType(line)) // note the usage is reversed { // do stuff... } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |