为什么您需要使用;“动态”;数据类型超过“;Var";在C#中?

为什么您需要使用;“动态”;数据类型超过“;Var";在C#中?,c#,C#,我知道C#中动态和变量的区别: 动态:它使用反射和后期绑定。(如果指定了错误的属性,则在运行该属性之前,生成不会捕获它。) Var:它是早期绑定的(如果分配了错误的属性,则在生成时会自动弹出错误。) 但是,我不明白,如果Var是一个如此智能的标记,并且通过检查指定的值了解您的意图,为什么您需要使用DynamicoverVaR 我读了很多文章,但找不到确切的答案,我的脑袋还在转。动态主要是为了COM+互操作性而引入的,在这种情况下,类型从COM接口返回,但没有固定。这在与其他非类型语言(如ja

我知道C#中动态和变量的区别:

  • 动态:它使用反射和后期绑定。(如果指定了错误的属性,则在运行该属性之前,生成不会捕获它。)
  • Var:它是早期绑定的(如果分配了错误的属性,则在生成时会自动弹出错误。)
但是,我不明白,如果Var是一个如此智能的标记,并且通过检查指定的值了解您的意图,为什么您需要使用DynamicoverVaR


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

动态主要是为了COM+互操作性而引入的,在这种情况下,类型从COM接口返回,但没有固定。这在与其他非类型语言(如javascript)交互时也很常见(ASP.NET MVC应用程序中视图中的代码可能是您看到它使用的最常见的地方)


除此之外,大多数使用动态的人都会看到,通过重构他们的代码来提供一个表示对象的接口,可以更好地处理动态的使用。

你不会使用
dynamic
“over”
var
。它们是非常不同的特征
var
只是一种语法糖,它可以节省您两次键入类名的时间
dynamic
不是用于节省键入时间,而是用于在运行时之前无法知道其类型的变量。