C# 这是自动属性的正确语法吗?

C# 这是自动属性的正确语法吗?,c#,automatic-properties,C#,Automatic Properties,我已经编程这么长时间了,有时很难跟上语言的变化 在.NETV2之后设置这样的属性真的可以吗 public string LocaleName { get; set; } 不需要内部场?编译器最近似乎处理了这个问题?是的,这是C#3.0中的一个新功能,只要您不需要进行任何检查来查看值是否设置正确就可以了 你可以看一看这本书 是的,这些被称为。编译器将为您的属性创建备份字段 因为“自动实现的属性”是“C#编译器技巧”,所以只要使用C#3.0编

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

在.NETV2之后设置这样的属性真的可以吗

    public string LocaleName
    {
        get;
        set;
    }

不需要内部场?编译器最近似乎处理了这个问题?

是的,这是C#3.0中的一个新功能,只要您不需要进行任何检查来查看值是否设置正确就可以了

你可以看一看这本书

是的,这些被称为。编译器将为您的属性创建备份字段


因为“自动实现的属性”是“C#编译器技巧”,所以只要使用C#3.0编译器编译代码,就可以在代码和目标.NET framework 2.0中使用它们

是,它们被调用,并将在幕后生成支持字段。

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

您也可以这样做:

public string MyString
{
   get;
   private set;
}

这给了你一个公共访问器,但却给了你一个私有设置器。

所以我用C#v3编程,但使用的是.net v2 framework?@JL,是的,这是一个C#功能,不需要任何特定的框架版本。:)它更像是VisualStudio2008的编译器功能。如果您将VS2005与.NET 3.0扩展一起使用,您将无法获得此功能。@280Z28 C#功能可能需要也可能不需要CLR支持,例如LINQ到“X”确实需要CLR支持,而自动实现的属性则不需要,因为它们纯粹是一种编译器技巧。此功能需要C#3编译器。您可以更改问题,以反映您询问安装了哪个版本的C#是正确的,您可以根据需要限制每个的访问权限,例如公共字符串LocaleNam{get;private set;}