【问题标题】:Why would you need to use "Dynamic" data type over "Var" in C#? [duplicate]为什么需要在 C# 中使用“动态”数据类型而不是“Var”? [复制]
【发布时间】:2018-03-22 10:11:22
【问题描述】:

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

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

但是,如果 Var 是一个如此聪明的标记并且通过检查您分配的值来了解您的意图,我无法弄清楚为什么您需要使用 Dynamic over Var。

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

【问题讨论】:

  • 你不会使用dynamic "over" var。它们是非常不同的功能。 var 只是语法糖,可以让你省去两次输入类名。 dynamic 不是用于节省键入时间,而是用于在运行时才能知道其类型的变量。

标签: c#


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-01-20
    • 2011-06-19
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    相关资源
    最近更新 更多