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/