为什么在C#中需要使用“动态”数据类型而不是“Var”?

时间:2017-10-10 21:26:23

标签: c#

我知道C#中Dynamic和Var之间的区别:

  • 动态它使用反射和后期绑定。 (如果你指定了错误的属性,那么在你运行它之前,构建将不会捕获它。)
  • Var:它是早期绑定的(如果您指定了错误的属性,则在执行构建时会自动弹出错误。)

但是,我无法弄明白为什么你需要使用Dynamic over Var,如果Var是这样一个智能标记,并通过检查你的指定值来了解你的意图。

我读过很多文章,但找不到确切的答案,我的脑袋仍在旋转。

1 个答案:

答案 0 :(得分:2)

动态主要是针对COM +互操作性而引入的,其中在COM接口返回的类型未修复的情况下。当与其他非类型语言(如javascript)交互时,这通常也会出现(ASP.NET MVC应用程序中View中的代码可能是您将看到它的最常见位置)。

除了动态的大多数用途之外,你会看到人们使用它来通过重构代码来提供代表对象的接口来更好地处理它。