C# 3.0 的自动属性(Automatic Properties)
来源:互联网 发布:primavera软件 编辑:程序博客网 时间:2024/05/22 13:13
使用自动属性后,你可以不用手工声明一个私有成员变量以及编写get/set逻辑,取而代之的是,编译器会自动为你生成一个私有变量和默认的get/set 操作。系统为你产生的私有变量在IDE中,你是看不到的,如下图:
当然如果你希望属性中有些赋值或者取值逻辑校验,自动属性可是不适合你的。
上面的代码我们编译后,再用 Reflector 反编译后,我们可以看到上述代码中的属性变成了如下代码:这个编译器给我们产生的私有变量,显然不是那么容易重名的。
[CompilerGenerated]
private string <>k__AutomaticallyGeneratedPropertyField0;
public string Name
{
[CompilerGenerated]
get
{
return this.<>k__AutomaticallyGeneratedPropertyField0;
}
[CompilerGenerated]
set
{
this.<>k__AutomaticallyGeneratedPropertyField0 = value;
}
}
注意:如果你只希望属性有 get 或者 set 方法,这些情况都是无法使用 自动属性的,需要你自己来书写。否则就会报如下的错误:
'ConsoleApplication1.MyClass.Name.set' must declare a body because it is not marked abstract or extern. Automatically implemented properties must define both get and set accessors.
但是 get 和 set 访问级别不一样,比如一个是 public,一个是 internal,则可以书写成下述方式,而不会报错误。
public int ID { get; internal set; }
参考资料:
Orcas中C#语言的新特性:自动属性,对象初始化器,和集合初始化器
- C# 3.0 的自动属性(Automatic Properties)
- C# 3.0 的自动属性(Automatic Properties)
- C# 3.0 的自动属性(Automatic Properties)
- C# 3.0 的自动属性(Automatic Properties)
- C# 3.0 的自动属性(Automatic Properties)
- C# 3.0 的自动属性(Automatic Properties)
- 新的C#语言特性:自动属性(Automatic Properties)
- C#3.0新特性系列:自动属性(Automatic Properties)
- C#3.0 automatic properties
- VS2008&C#3.5语言特色系列[视频]:自动属性(Automatic Properties)
- C# 3.0新特性之Automatic Properties(自动属性)、Object Initializers(对象初始化器)、Collection Initializers(集合初始化器)和Extension Methods(扩展方法)
- Automatic Properties in C#
- C# 3.0新特性之自动属性(Auto-Implemented Properties)
- 步步为营VS 2008 + .NET 3.5(3) - C# 3.0新特性之Automatic Properties(自动属性)、Object Initializers(对象初始化器)、Collection Initializers(集合初始化器)和Ext
- 步步为营VS 2008 + .NET 3.5(3) - C# 3.0新特性之Automatic Properties(自动属性)、Object Initializers(对象初始化器)、Collection Initializers(集合初始化器)和Ext
- C#3.0自动属性
- C#自动实现的属性(从C#3.0引入)
- 属性的自动实现(Auto-Implemented Properties) - VS2005
- C# 3.0 的Lambda表达式(Lambda Expressions)
- C#3.0 LINQ 查询语法
- C#3.0 中对象初始化器(Object Initializers)和集合初始化器(Collection Initializers)
- C#3.0 中使用扩展方法来扩展接口
- C#3.0 中的扩展方法 (Extension Methods)
- C# 3.0 的自动属性(Automatic Properties)
- 在查询语句中使用 NOLOCK 和 READPAST
- C#3.0 中 隐式类型变量、匿名类型
- 通过设置项目输出XML文档,来强制要求写注释
- 编码实现读取文本的方法
- 推荐 Gemini 这个bug管理工具
- 基于.net技术的代码高亮显示组件
- VB.NET and C# 语法比较手册
- 在点按扭后出现对话框,确定则继续执行,取消则不执行