奇怪的动态类型参数问题

时间:2016-09-27 18:41:40

标签: c# .net

简单代码:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>Add
</button>

<div id="contain">
</div>

上面的代码编译时没有错误,并在运行时执行异常:class Program { static void Main(string[] args) { dynamic income = "test"; var result = Test(income); // Why dynamic? Test2(result); // WTF? } static string Test(string income) { return income; } static string Test2(int income) { return income.ToString(); } }

有人可以解释为什么An unhandled exception of type Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' occurred in System.Core.dll被确定为result类型?

1 个答案:

答案 0 :(得分:10)

dynamic值传递给表达式时,整个表达式变为dynamic

动态的全部意义是关闭所有类型检查;编译器将始终假设dynamic,即使代码明显错误。