C#3.0新特性系列:自动属性(Automatic Properties)
来源:互联网 发布:新郎婚礼致辞 知乎 编辑:程序博客网 时间:2024/05/01 20:18
一.自动属性简介
对于任何一个C#开发人员来说,对于下面这样的代码片段应该都是不陌生的:
public 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 String _email;
public String Email
{
get { return _email; }
set { _email = value; }
}
}
在C# 3.0中提供了一种新的语言特性可以让我们的编码更加简洁、更加优雅,我们不用手工声明一个私有的字段和编写默认的get/set操作。在编译的时候,编译器会自动为你生成对应的私有变量,变量名自动生成,不会重复。也就是说,上面的代码片段用自动属性可以变为:
public class Person
{
public String Name { get; set; }
public int Age { get; set; }
public String Email { get; set; }
}
21行的代码变成了6行,是不是非常的简单呢?使用时跟我们以前的使用没什么区别:
二.注意的问题
1.要同时实现get和set访问器,不能使用自动属性只实现其中的一种,遇到这种情况时只能按以前的办法自己动手丰衣足食了。下面的代码无法编译通过:
public class Person
{
public String Name { get; }
public int Age { get; set; }
public String Email { get; set; }
}
编译器会提示:Automatically implemented properties must define both get and set accessors
2.如果get和set访问器可访问级别不同时,是可以使用的,如下面的代码可以编译通过:
public class Person
{
public String Name { get; internal set; }
public int Age { internal get; set; }
public String Email { get; set; }
}
对于任何一个C#开发人员来说,对于下面这样的代码片段应该都是不陌生的:
public 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 String _email;
public String Email
{
get { return _email; }
set { _email = value; }
}
}
在C# 3.0中提供了一种新的语言特性可以让我们的编码更加简洁、更加优雅,我们不用手工声明一个私有的字段和编写默认的get/set操作。在编译的时候,编译器会自动为你生成对应的私有变量,变量名自动生成,不会重复。也就是说,上面的代码片段用自动属性可以变为:
public class Person
{
public String Name { get; set; }
public int Age { get; set; }
public String Email { get; set; }
}
21行的代码变成了6行,是不是非常的简单呢?使用时跟我们以前的使用没什么区别:
二.注意的问题
1.要同时实现get和set访问器,不能使用自动属性只实现其中的一种,遇到这种情况时只能按以前的办法自己动手丰衣足食了。下面的代码无法编译通过:
public class Person
{
public String Name { get; }
public int Age { get; set; }
public String Email { get; set; }
}
编译器会提示:Automatically implemented properties must define both get and set accessors
2.如果get和set访问器可访问级别不同时,是可以使用的,如下面的代码可以编译通过:
public class Person
{
public String Name { get; internal set; }
public int Age { internal get; set; }
public String Email { get; set; }
}
- C#3.0新特性系列:自动属性(Automatic Properties)
- 新的C#语言特性:自动属性(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# 3.0 的自动属性(Automatic Properties)
- C# 3.0新特性之Automatic Properties(自动属性)、Object Initializers(对象初始化器)、Collection Initializers(集合初始化器)和Extension Methods(扩展方法)
- C# 3.0新特性之自动属性(Auto-Implemented Properties)
- VS2008&C#3.5语言特色系列[视频]:自动属性(Automatic 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 automatic properties
- C#3.0新特性(三)-详说自动属性和匿名类型
- C#3.0新特性(三)- 详说自动属性和匿名类型
- Automatic Properties in C#
- Oracle12c中SQL性能优化(SQL TUNING)新特性之自动重优化(automatic reoptimization)
- vc 刷新系统托盘图标(原创)
- ASP.NET Futures体验:动态数据控件(3)
- SQL Server 2008和T-SQL新功能
- BlogEngine.NET 1.1 发布
- DataGrid 多选属性allowMultipleSelection
- C#3.0新特性系列:自动属性(Automatic Properties)
- 2007-8-23 FastSpring.NET V2.05 RC1 发布
- 第四次作业(网页代码)
- Microsoft .NET Framework 3.5 June 2007 CTP 发布
- sql server 2005 修改计算机主机名后 ,无法创建数据库发布的解决方法
- 2007年你必须学习的10项.NET技术
- 架构师,设计师,程序员的区别
- “试客”一族诠释营销2.0
- ASP.Net页面生命周期