为什么你需要在C#中使用“Var”的“Dynamic”数据类型?

问题描述:

我知道在C#中的动态和VAR的区别:为什么你需要在C#中使用“Var”的“Dynamic”数据类型?

  • 动态:它使用反射和后期绑定。 (如果你指定了一个错误的属性,构建将不会捕获它,直到你运行它。)
  • Var:它是早期绑定的(如果你指定一个错误的属性,当你做一个构建时会自动弹出错误)

但是,我无法弄清楚为什么你需要使用Dynamic over Var,如果Var是一个聪明的标记,并且通过检查你指定的值知道你的意图。

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

+5

你不会在var上使用'dynamic'“。他们是非常不同的功能。 'var'只是语法糖,可以让你省去输入两次类名。 'dynamic'是* not *用于保存时间输入,它是用于在运行时才能知道的变量类型。 – Blorgbeard

动态主要是为COM +互操作性引入的,其中在COM接口返回的类型不固定的情况下。这也可以在与其他非类型语言(如JavaScript)进行交互时常见(ASP.NET MVC应用程序中的View中的代码可能是您将看到它使用的最常见的位置)。

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