【问题标题】:Confused about using .Net 3.5+ features in a 2.0 site对在 2.0 站点中使用 .Net 3.5+ 功能感到困惑
【发布时间】:2011-03-24 23:57:19
【问题描述】:

在 VS 2010 中,我将目标框架设置为 2.0。在代码中,它允许我使用 var 关键字以及隐式属性(public int Foo { get; set; })。

这不仅可以构建,而且当我将 dll 上传到我的 ASP.Net 2.0 站点时,该站点可以正常运行代码。

什么给了?

【问题讨论】:

标签: .net


【解决方案1】:

您对 C# 和 .NET 感到困惑。

这些是 C# 3.0 功能。它们与您使用的 .NET 版本无关。

【讨论】:

  • 那么任何未来版本的 C# 都可以在任何先前版本的 .NET 上运行?新功能出来的时候编译器不是要升级吗?
  • 大多数编译器功能不需要框架或 CLR 的支持。例如,泛型需要 CLR 支持。自动属性不需要支持 - 编译器只是发明了一个支持字段,因此它们看起来就像“正常”属性。
【解决方案2】:

var 和隐式属性(“自动实现的属性”)是 C# 3.0 的方面,而不是 .NET。 C# 3.0 和 2.0 都可以编译为 .NET 2.0,但有一些例外 - 换句话说,您提到的功能(以及其他一些功能)是纯粹的语法糖,可以编译为自 .NET 2.0 以来可用的相同 IL 结构.

Jon Skeet 的“C# In Depth”在线有一个section 很好地解释了这一点。请注意,并非 C# 3.0 的所有功能都在 .NET 2.0 中可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2013-08-21
    • 2012-11-14
    • 2021-08-16
    • 2013-06-19
    • 1970-01-01
    • 2011-07-23
    相关资源
    最近更新 更多