dynamic d = "hello";
Console.WriteLine (d.ToUpper()); // HELLO
Console.WriteLine (d.Foo()); // Compiles OK but gives runtime error
我在读一本书,在本节的跌跌撞撞,在第三行,只在运行时抛出的错误,但它会编译即使Foo
方法不存在。动态可变编译
为什么不在编译时检查它,而不是在运行时?
编辑: 什么意义,什么时候可以使用这个概念?
dynamic d = "hello";
Console.WriteLine (d.ToUpper()); // HELLO
Console.WriteLine (d.Foo()); // Compiles OK but gives runtime error
我在读一本书,在本节的跌跌撞撞,在第三行,只在运行时抛出的错误,但它会编译即使Foo
方法不存在。动态可变编译
为什么不在编译时检查它,而不是在运行时?
编辑: 什么意义,什么时候可以使用这个概念?
dynamic
-keyword导致了此行为。当制作一个变量dynamic
时,你可以做所有的东西,因为它使编译时不安全。所以通过使dynamic
完全绕过编译时类型 - 这就是为什么你在使用它时应该小心。
虽然在运行时检查成员是dynamic
的全部点 - 为什么它应该存在,否则?
我以为你故意想让var
-keyword这给你编译时安全。看看this point for the difference on both。至于当使用关键字看看this post。
我什么时候可以使用这种技术?或使用它的正确方法? – Sherlock
通常根本没有,只有露水的情况下,你应该使用它。无论如何,只要你不需要*显式*,我就不会太在意。 – HimBromBeere
感谢兄弟!即使我失去了我的一些声誉,这也是有帮助的。T.T版主感叹 – Sherlock
你可以把它标记为重复的,我在这篇文章中唯一的目标是从有经验的程序员那里得到输入,你不能在书中甚至在一些文章中找到它。 – Sherlock