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; } 

}