【问题标题】:Is this the correct syntax for auto properties?这是自动属性的正确语法吗?
【发布时间】:2009-07-23 04:05:51
【问题描述】:

我已经编程了很长时间,有时很难跟上语言的变化......

.net v2之后这样设置属性真的可以吗

    public string LocaleName
    {
        get;
        set;
    }

不需要内部字段?似乎编译器最近会处理这个问题?

【问题讨论】:

  • 您可能会更改您的问题以反映您询问您安装了哪个版本的 C#。
  • 这是正确的,如果需要,您可以限制每个的可访问性,例如公共字符串 LocaleNam { 获取;私人集;}

标签: c# automatic-properties


【解决方案1】:

是的,这是 C# 3.0 中的新功能

【讨论】:

  • 所以我在 C# v3 中编程,但使用 .net v2 框架?
  • @JL,是的,它是一个不需要任何特定框架版本的 C# 功能。 :)
  • 它更像是 Visual Studio 2008 的编译器功能。如果您使用带有 .NET 3.0 扩展的 VS2005,您将无法获得此功能。
  • @280Z28 C# 功能可能需要也可能不需要 CLR 支持,例如LINQ to 'X' 确实需要 CLR 支持,而自动实现的属性则不需要,因为它们纯粹是一个编译器技巧。
  • 此功能需要 C# 3 编译器。
【解决方案2】:

只要您不需要检查值是否设置正确就可以了。

您可以查看C# Specification

【讨论】:

    【解决方案3】:

    你知道,你也可以这样做:

    public string MyString
    {
       get;
       private set;
    }
    

    它为您提供了一个公共访问器但一个私有设置器。

    【讨论】:

      【解决方案4】:

      是的,它们被称为'auto implemented properties'。编译器将为您的属性创建一个支持字段。

      因为“自动实现的属性”是“C# 编译器技巧”,您可以在您的代码中使用它们并针对 .NET 框架 2.0,只要您使用 C# 3.0 编译器来编译您的代码。

      【讨论】:

        【解决方案5】:

        是的,它们被称为automatic properties,并将在幕后生成支持字段。

        【讨论】:

          【解决方案6】:

          是的。在 C# 3.0 及更高版本中,当属性访问器中不需要额外的逻辑时,自动实现的属性使属性声明更加简洁。它们还使客户端代码能够创建对象 当您如下例所示声明属性时,编译器会创建一个私有的匿名支持字段,只能通过该属性的 get 和 set 访问器访问。

          【讨论】:

            猜你喜欢
            • 2019-07-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-08-19
            • 2019-11-15
            • 1970-01-01
            相关资源
            最近更新 更多