C#2008语言特征2--自动属性
来源:互联网 发布:金钱观知乎 编辑:程序博客网 时间:2024/04/28 18:23
如果你还是使用c#2.0编写代码的话,如果定义一个类,你可能仍然这样编写你的代码。
namespace AutoProperty
{
class Person
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
private double height;
public double Height
{
get { return height; }
set { height = value; }
}
}
}
在c#中是推荐使用属性来代替public变量的。在项目中也尽量将需要公开的字段定义为属性,代之而来的就是上面代码的冗繁。不管你对这个属性有没有特殊处理,都需要先定义一个私有变量,并将其在get,set方法中返回或赋值。使得代码量大量增加,阅读难度也增加。可是现在c#3.0允许你这样写你的代码了
namespace AutoProperty
{
class AutoPerson
{
public string Name
{ get; set; }
public int Age
{ get;set;}
public double Height
{ get; set; }
}
}
“自动属性”的语言特性提供了一个优雅的方式来使得你的编码更加简洁,同时还保持属性的灵活性。自动属性允许你避免手工声明一个私有成员变量以及编写get/set逻辑,取而代之的是,编译器会自动为你生成一个私有变量和默认的get/set操作。
下面使用Reflector工具反编译一些上面的代码,看一下两个类代码之间的异同,图9-2是Person类的反编译结果。
图9-2
图9-3是AutoPerson类的反编译结果
图9-3
能够看到系统在类AutoPerson类中自动生成了三个私有字段,格式是<属性名>k__BackingFiled。再看一下,属性Age的代码部分,如图9-4所示。
图9-4
现在你应该完全明白自动属性的实现过程了吧。
但是,上面的情形仅仅适用于在get或者set方法中没有任何逻辑判断的情况。如果你需要在get或者set方法中添加逻辑判断,那么不得不重新会到以前传统的写法。所以代码应该是这两种方法的混合体。
- C#2008语言特征2--自动属性
- C#2008语言特征3----扩展方法
- C#2008语言特征4----局部方法
- C#2008语言特征6----匿名类型
- 新的C#语言特性:自动属性(Automatic Properties)
- C#自动属性
- C#自动属性
- C#3.0自动属性
- c#自动属性
- c#自动属性
- C# 自动属性
- C# 自动属性
- C#2008语言特征1---隐含类型本地变量
- C#2008语言特征5----对象和集合初始值语法
- Orcas中C#语言的新特性:自动属性,对象初始化器,和集合初始化器
- Orcas中C#语言的新特性:自动属性,对象初始化器,和集合初始化器
- VS2008&C#3.5语言特色系列[视频]:自动属性(Automatic Properties)
- C# 语言规范--1.14 属性
- 委托、事件和Lmbdas表达式2-事件
- AGP内存
- 如何防电脑辐射?
- 委托、事件和Lmbdas表达式3----委托相关知识
- C#2008语言特征1---隐含类型本地变量
- C#2008语言特征2--自动属性
- C#2008语言特征3----扩展方法
- MYsql驱动下载地址
- C#2008语言特征4----局部方法
- 站点地图与网站优化
- C#2008语言特征5----对象和集合初始值语法
- bboss aop 实践(3)构造函数依赖注入
- 不用第三变量交换整型数值的三种方法
- C#2008语言特征6----匿名类型