您的位置:首页 > 编程语言 > C#

C#学习基本概念之自动实现的属性

2016-11-25 14:16 357 查看
在 C# 3.0 及更高版本,当属性访问器中不需要任何其他逻辑时,自动实现的属性会使属性声明更加简洁。 它们还允许客户端代码创建对象。 当你声明以下示例中所示的属性时,编译器将创建仅可以通过该属性的
get
set
访问器访问的专用、匿名支持字段。
下列示例演示一个简单的类,它具有某些自动实现的属性:
class Customer
{        // Auto-Impl Properties for trivial get and set
public double TotalPurchases { get; set; }
public string Name { get; set; }
public int CustomerID { get; set; }        // Constructor
public Customer(double purchases, string name, int ID)
{
TotalPurchases = purchases;
Name = name;
CustomerID = ID;
}        // Methods
public string GetContactInfo() {return "ContactInfo";}
public string GetTransactionHistory() {return "History";}
// .. Additional methods, events, etc.
}
class Program
{        static void Main()
{            // Intialize a new object.
Customer cust1 = new Customer ( 4987.63, "Northwind",90108 );
//Modify a property
cust1.TotalPurchases += 499.99;
}
}
在 C# 6 和更高版本中,你可以像字段一样初始化自动实现属性:
public string FirstName { get; set; } = "Jane";
上一示例中所示的类是可变的。 创建客户端代码后可以用于更改对象中的值。 在包含重要行为(方法)以及数据的复杂类中,通常有必要具有公共属性。 但是,对于较小类或仅封装一组值(数据)且只有很少行为或没有行为的结构,则应该通过声明 set 访问器为 专用(对使用者的不可变)或通过声明仅一个 get 访问器 (除构造函数外都不可变),使对象不可变。 有关详细信息,请参阅如何:使用自动实现的属性实现轻量类
动实现的属性上允许使用特性,但很明显支持字段上不允许,因为不能从你的源代码访问它们。 如果必须使用属性的支持字段上的特性,只需创建一个常规属性。

备注:摘自https://msdn.microsoft.com/zh-cn/library/bb384054.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  自动实现的属性