“is” - 类型运算符

2023-12-23

我使用“is”运算符来查找某个类:

for(int i=0; i<screens.Count; i++){
  if(screen is ScreenBase){
    //do something...
  }
}

这工作得很好,特别是当它找到从 ScreenBase 继承的任何类但不是从 ScreenBase 继承的基类时。

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

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

但这种比较会产生警告,因为它将与“Type”类进行比较。

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


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

If GetType(line)返回一个类型(顺便说一句,我建议一个更好的名称),您可以使用Type.IsAssignableFrom http://msdn.microsoft.com/en-us/library/system.type.isassignablefrom.aspx:

if (typeof(ScreenBase).IsAssignableFrom(GetType(line)))
{
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“is” - 类型运算符 的相关文章

随机推荐

  • 指定制表符宽度?

    显示空白时是否可以定义制表符宽度 例如在 标记或其他内容内 我找不到任何可以用 CSS 做到这一点的东西 但这似乎是一件很常见的事情 就我而言 选项卡宽度太宽 导致页面上的一些代码片段太宽 如果我能以某种方式缩短选项卡宽度以使其适合没有滚动
  • 在 PHP 中将二进制字节数组转换为图像

    我有一个 Java 网络服务 它返回所请求的文件内容byte 字节数组 形式 有时这些文件是 HTML 文件 有时是图像 文件类型没有限制 我正在寻找一种方法将此数组转换为有效的图像 字符串 我的working for text文件如下 b
  • Google OAuth 令牌验证如何以及为何执行?

    当 Google OAuth 文档指示我在访问令牌 刷新令牌 范围 受众和客户端 ID 之间进行操作时 我感到很困惑验证所有令牌 https developers google com accounts docs OAuth2UserAge
  • Net::SSH::Perl 使用转发的 SSH 密钥

    我正在尝试使用 Net SSH Perl 编写 perl 脚本 目前它非常简单 因为我只想通过 ssh 在目录中执行 ls usr bin perl use Net SSH Perl KEYFILE user ssh id rsa ssh
  • number_format() 导致错误“遇到格式不正确的数值”

    我正在使用 number format 将浮点数四舍五入为仅 2 位小数 问题是我的一些输入一开始的小数位数不超过 2 位 所以代码 number format value 2 如果没有足够的十进制数字 它不会平静地添加 0 而是会在 Ap
  • X 宏破坏 doxygen 调用图

    我有3个文件 test c int table define X val val include test x undef X void level2 void level3 level4 void level3 void level4 t
  • 我认为等待与调用者在同一线程上继续,但似乎并非如此

    我认为关于 async await 的要点之一是 当任务完成时 延续在调用 wait 时在相同的上下文中运行 在我的例子中 该上下文是 UI 线程 例如 Debug WriteLine 2 Thread ID Thread CurrentT
  • Spring boot:创建名为“methodValidationPostProcessor”的 bean 时出错

    我有一个 Spring Boot 应用程序 正在创建 war 文件并部署在 Tomcat 8 上 该代码在 Eclipse Oxygen 中运行时运行良好 在 Tomcat8 上运行应用程序时遇到异常 Caused by org sprin
  • 如何 grep 查找文件中是否存在特定的十六进制字节?

    我的网络应用程序正在显示一些奇怪的输出 不应该出现的 unicode 字符等 我能想到的最好的情况是 我在源代码中的某个地方引入了一个错误的字符 但我不知道在哪里 I found 这个答案 https stackoverflow com a
  • iPhone开发——防止泄密

    当我使用 Leaks 运行我的应用程序并查看任何泄漏的扩展详细信息时 它会将我带到代码中的特定行 但我不知道之后要做什么 例如 Leaks 在这一行显示了一个 malloc NSData data NSURLConnection sendS
  • PHP preg_replace 跳过匹配重叠的地方

    我整个下午都在谷歌搜索这个正则表达式行为 str b c d w i e f g h this string echo preg replace s bcdefghjklmnopqrstuvwxyzBCDEFGHJKLMNOPQRSTUVW
  • Twitter 的 URL 爬虫执行 JavaScript 吗?

    当 Twitter 抓取 URL 来呈现 Twitter 卡 通过元标记配置 时 Twitter 会首先执行您的 JavaScript 还是要求这些标记直接从服务器发送 我问这个问题的原因是现在是 2016 年 所以我正在开发一个单页应用程
  • Windows 中特定进程的上下文切换计数

    我想做的是编写一个小程序 连续实时计算特定进程在足够小的时间单位内经历的上下文切换的数量 我在 Process Explorer 软件中观察到了此功能 所以我知道这绝对是可能的 不幸的是 我对如何开始编码知之甚少 并且到目前为止无法在网上找
  • Angular2 和 TSD 的“重复标识符”错误

    我正在尝试将项目从 Angular 1 转换为 Angular 2 这是一个带有一些通用代码的客户端和服务器项目 所以我将它们放在一起 我想在客户端使用 Angular 2 所以我遵循了ng2 快速入门 https angular io d
  • 高性能 REST API - 哪种语言/堆栈? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • C++ 中的 ::* 是什么?

    当我面对时 我正在阅读基本的 C 教程 在下面的代码中 我可以知道那是什么吗 class A public protected int i class B public A friend void f A B void g A void f
  • 使用 ImageMagick 转换颜色(不是图像)

    更具体地说 我想准确地转换 CMYK 值 可能来自ISO Coated v2空间 到 RGB 值 可能来自sRGBspace 在 Ruby 平台上 可能使用 ICC 配置文件 ImageMagick 似乎是一个不错的起点 但我也听说 Lit
  • 将 JsonObject 转换为字符串

    data map allowNestedValues true create 2012 12 11 15 16 13 title test201212110004 transitions msg success code 0 上面是一个Js
  • 如何从车把模板访问骨干模型的计算字段?

    我想从模板访问我在模型 backbone js 中实现的计算字段 我是否总是需要定义一个助手来完成它 我认为问题与我将模型传递给模板的方式有关 如果我传递 this model toJSON 我可以访问属性 但不能访问我在其中定义的函数 如
  • “is” - 类型运算符

    我使用 is 运算符来查找某个类 for int i 0 i