2.5C#函数成员之属性(Property)

属性声明

属性的声明方式与字段相似,区别是属性声明以在分隔符 { 和 } 之间写入的 get 访问器或 set 访问器结束,而不是以分号结束。

属性需与字段配套使用,字段是数据成员(定义存储位置),而属性是为了操作字段而生的函数成员(不定义存储位置)。

//常规语法
public class Person
{
    public string FirstName
    {
        get { return firstName; }
        set { firstName = value; }
    }

    private string firstName;
}
//expression-bodied语法
public class Person
{
    public string FirstName
    {
        get => firstName;
        set => firstName = value;
    }

    private string firstName;
}

自动属性语法会自动生成支持此属性的字段的存储位置并自动实现 get 和 set 访问器,无需显式声明字段。

get 和 set访问器只要书写其中一个并且未实现代码即为自动属性。

//自动属性语法
public class Person
{
    public string FirstName { get; set; }
}

访问器

属性通过访问器实现,访问器用于定义访问属性或为属性赋值时执行的语句,get 访问器读取该值,set 访问器写入该值。get 访问器是没有参数且返回类型为属性类型的方法,而set 访问器是value参数且返回值为void的方法。

同时具有 get 访问器和 set 访问器的属性是 读写属性,只有一个 get 访问器的属性是 只读属性,只有一个 set 访问器的属性是 只写属性

属性分类

名称修饰符
静态属性用 static 修饰
实例属性无 static 修饰

readonly修饰符

字段可以通过readonly将字段声明为只读字段,属性可以通过访问器来将属性声明为只读属性。

public class Person
{
    public Person(string firstName) => this.FirstName = firstName;

    public string FirstName { get; }

    // remaining implementation removed from listing
}

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/csharp/csharplang/8256.html

发表评论

登录后才能评论