c# - 为什么动态调用返回动态结果?

标签 c# c#-4.0 language-design .net-4.0

public string Foo(object obj) {
    return null;
}

public string Foo(string str) {
    return null;
}

var x = Foo((dynamic) "abc");

为什么 x 是动态的,编译器不够智能或者我错过了一些重要的东西?

最佳答案

我只是猜测,但是...

当您向dynamic 添加强制转换时,整个表达式将变为动态表达式。动态表达式的结果总是动态的,因为一切都在运行时解决。

查看有关使用 dynamic 的 MSDN 页面以获取更多信息:

Using Type dynamic (C# Programming Guide)

然后滚动到以下文本:

The result of most dynamic operations is itself dynamic.

关于c# - 为什么动态调用返回动态结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3997219/

相关文章:

wpf - 模型 View ViewModel + WPF-需要进一步了解

c# - WCF - 使用 DataMember 装饰 IEnumerable<T> 导致异常 :The underlying connection was closed: The connection was closed unexpectedly

oop - 为什么 Rust 不支持特征对象向上转换?

c# - 获取网络打印机列表 silverlight

c# - C# 中 DSL/自定义类型的工具包?

language-agnostic - null 的目的是什么?

c# - 如何强制 XmlSerializer 为空列表包含一个空标记

c# - 面板没有获得焦点

c# - 无法将整数类型隐式转换为 bool 值

c# - 我在这里制造泄漏吗?