c# - "is"运算符如何处理动态对象?

标签 c# c#-4.0 dynamic dynamic-language-runtime

如何is运营商在 DLR 方面的工作?

为了让我的问题更明确一点,请考虑以下签名:

 public bool Is<T>(Func<dynamic> getInstance)
 { 
     return getInstance() is T;
 }

默认情况下,Is<T>需要什么条件返回 true ?此外,DLR 是否提供任何机制来自定义此行为?

最佳答案

在运行时,dynamic 被视为与object 相同,这意味着 getInstance 委托(delegate)结果的运行时类型将用于执行此检查。此处使用dynamic 的唯一区别是不会进行编译时检查,而将在运行时使用动态绑定(bind)对getInstance 返回的动态对象执行此检查>.

By default, what conditions are necessary for Is to return true?

传入的委托(delegate)需要返回一个在运行时与 T 兼容的类型。

Furthermore, does the DLR provide any mechanism to customize this behavior?

没有。这将使用 C# 类型的标准规则。任何自定义行为都需要写入逻辑本身。

关于c# - "is"运算符如何处理动态对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15688815/

相关文章:

c# - RESTful 接口(interface) - 添加子对象

c# - 从字符串中过滤开始和结束字符

c# - LookupAccountSid 每次调用花费 +600 毫秒

asp.net - Paypal Integration 后处理信息

c++ - 新的和数组的大小

c# - 在 ARCore unity 中禁用/切换跟踪平面的可视化

asp.net-mvc-3 - Edit() [Razor]View 的下拉菜单,预加载模型中的数据

c#-4.0 - HttpContext.Current 在 Application_PreSendRequestHeaders 中为 null

javascript - 使用 Jquery 动态检查单选按钮是否被选中

javascript - Chrome 浏览器是否破坏了动态脚本加载?