【问题标题】:var vs regular object declaration C# [duplicate]var vs 常规对象声明 C# [重复]
【发布时间】:2013-07-28 21:55:59
【问题描述】:
var foo1 = new SomeClass();
SomeClass foo2 = new SomeClass();

这两行代码是否转换为相同的 IL,dynamic 与它们有何不同?我知道dynamic 使用了某种称为后期绑定的技术,但它是如何工作的?

【问题讨论】:

  • 这看起来像是……飞碟的工作。
  • 它们是一样的,在IL中没有区别。多次提出并回答了问题。
  • 您的问题实际上是关于var(根据标题)还是dynamic(根据正文)?它们完全不同 - 两者都有大量文档。
  • 在我最喜欢的搜索引擎中输入dynamic c# 后,我找到了很多关于dynamic 的解释。也许您可以更具体地说明您不了解哪些位?

标签: c#


【解决方案1】:

这两行代码是否翻译成同一个 IL?

是的

动态与它们有何不同?

在您显示会员访问权限之前毫无意义;例如:

dynamic foo3 = new SomeClass();
foo3.SomeMethod();

在这里,SomeMethod 在运行时通过动态调度层或位于反射之上的缓存元编程层完全解决(取决于 SomeClass 具有的功能)。在常规(非动态)IL 中,它只是一个 callvirt 操作码。

【讨论】:

    猜你喜欢
    • 2011-05-01
    • 2011-10-28
    • 2018-06-17
    • 2021-09-21
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 2023-04-06
    相关资源
    最近更新 更多