当 C# 4.0 发布时,我们有了动态关键字,如 excellent presentation by Anders Hejlsberg 中所述,(C# 的发展速度快到我跟不上了。我没有太多时间来熟悉 var 关键字)
我还需要 var 关键字吗?有什么是 var 可以做的...而 dynamic 不能做的吗?
var x = SomeFunctionThatIKnowReturnsSomeKindOfList();
// do something with x
dynamic x = SomeFunctionThatIKnowReturnsSomeKindOfList();
// do something with x
最佳答案
不,它们非常不同。
var
的意思是“在编译时推断变量的类型”——但它仍然是完全静态绑定(bind)的。
dynamic
的意思是“假设我可以用这个变量做任何我想做的事”——即编译器不知道有哪些操作可用,DLR 会计算出调用的内容 在执行时的意思。
我希望很少使用 dynamic
- 只有当我真正想要动态行为时才使用:
var
让您在编译时捕捉拼写错误等- 静态绑定(bind)代码总是比动态绑定(bind)代码运行得更快(即使差异变得相当小)
- 静态绑定(bind)代码提供了更多的编译时支持,而不仅仅是错误:您可以找到调用层次结构、重构会更好地工作、Intellisense 可用等
关于c# - 新的 'dynamic' C# 4.0 关键字是否弃用了 'var' 关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/298277/