C#学习基本概念之自动实现的属性
2016-11-25 14:16
357 查看
在 C# 3.0 及更高版本,当属性访问器中不需要任何其他逻辑时,自动实现的属性会使属性声明更加简洁。 它们还允许客户端代码创建对象。 当你声明以下示例中所示的属性时,编译器将创建仅可以通过该属性的
下列示例演示一个简单的类,它具有某些自动实现的属性:
动实现的属性上允许使用特性,但很明显支持字段上不允许,因为不能从你的源代码访问它们。 如果必须使用属性的支持字段上的特性,只需创建一个常规属性。
备注:摘自https://msdn.microsoft.com/zh-cn/library/bb384054.aspx
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
相关文章推荐
- C#学习基本概念之接口属性
- C#学习基本概念之属性与索引器之间的比较
- C#学习基本概念之属性
- C#学习基本概念之属性使用
- 自动垃圾回收学习笔记-一些基本概念
- 使用C++11实现类似C#的属性概念设计
- C#学习基本概念之访问修饰符
- C# 数组集合 <一>基本概念(Array&ArrayList&List<T>&SortList&LinkList的实现Code)
- VB和C#的自动实现属性
- 深度 | 一篇文章带你进入无监督学习:从基本概念到四种实现模型(附论文)
- [读书笔记]C#学习笔记五: C#3.0自动属性,匿名属性及扩展方法
- C#学习基本概念之数据类型
- 第一天,第一个C#程序,学习C#基本语法。掌握命名空间、类、变量、方法等基本概念。
- C# 3.0 新特性 学习(一):隐式类型化本地变量、自动属性、初始化器(对象初始化器和集合初始化器)
- 【干货】如何使用C++11实现C#属性概念设计
- 【翻译】代码片段:C# 自动实现属性的意想不到行为
- Prolog学习:基本概念 and Asp.net与Dojo交互:仪器仪表实现
- C#:常规属性和自动实现的属性
- 举例讲解C#中自动实现的属性
- KING_C#学习之Thread和Timer实现延时用法(附自动切换窗体实例)