之前的做法:
在c#3.x出来之前,相信大家已经习惯通过一个private field + public property的发式来定义和实现一个public Property。就如下面方式实现。
 1c#3.0系列:Automatic Propertyclass person
 2    }
显然你可以在Property中的set/get代码块中,我们可以不受限制地定义我们的业务逻辑,但是在大多是场合下,我们都是像上面的code一样直接对一个定义的field进行操作:对其读写。但是我们如果根据项目的需要,例如作为Business EntityClass,需要封装非常多的数据,我们需要为不同类型的数据分别定义一个Property,这样不断重复的工作大家一定觉得很厌烦。
Automatic Property Overview
在c#3.x出来之后,我们可以通过Automatic Property来简化我们的操作。例如:
 1c#3.0系列:Automatic Propertyclass Employee
 2    }
上面的好处我就不用说了。
Automatic Property IN CLR
首先让我们看看c#3.x出来之前和出来之后,编译器是怎么处理的:
c#3.0系列:Automatic Property
大家可以看到,C#3.x仅仅是基于.NET Programming Language,而不是基于.NET Framework的。加了一些必要的code,使原本我们看起来显得残缺的code(比如缺少对Property 的实现)变得完整。在运行的时候,这些code和原来的code是完全一样的。Automatic Property代码里多处了两个域<Age>k_BackingField和<Name>k_BackingField,他们的作用就是:他们分别对应着两个PropertyAgeName),其作用和person中定义的两个FieldAgeName)完全一样。代码如下:
c#3.0系列:Automatic Propertyinternal class Employee
Quiz for Automatic Property
注意与抽象属性的区别
c#3.0系列:Automatic Propertyabstract class people
    }

不能定义只读或者只写的属性,必须同时提供
请看上面Employee。第一行,编译器会报错。

可以给读和写赋予不同的访问权限
请看上面Employee。Age属性,请注意他的操作权限。

自动属性的初始化
动属性会为字段自动赋予变量类型的初始值,如果是引用类型,则为null,如果你想初始化,必须要在
自定义的构造函数初始化。请看上面Employee

不适用的情况
果想在属性中增加判断、验证等逻辑,则只能用传统的属性定义方法实现 如下:
 1c#3.0系列:Automatic Propertypublic int Age 
 2




相关文章:

  • 2021-12-17
  • 2021-12-17
  • 2021-11-11
猜你喜欢
  • 2022-01-06
  • 2021-08-20
  • 2022-12-23
  • 2021-04-02
  • 2021-11-27
  • 2021-12-12
相关资源
相似解决方案