如何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/