c# - 新的 'dynamic' C# 4.0 关键字是否弃用了 'var' 关键字?

标签 c# c#-4.0 dynamic-languages

当 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/

相关文章:

c# - 无需反序列化protobuf复合流即可读取消息长度

c# - Linq 选择新对象

c# - DisplayFormat 与 CultureInfo DateTime

c# - .NET MySqlCommand @ 占位符与 MySQL 变量冲突

javascript - Bootstrap 工具提示不起作用

python - 如何创建具有属性的内联对象?

php - 动态语言中的接口(interface)有什么意义吗?

C#:相同签名的方法/构造函数和命名参数

visual-studio-2010 - MS Build 是否可以在不单独指定的情况下包含所有库项目代码文件,并与 Visual Studio 良好配合?

javascript - javascript中的动态对象构造?