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