首页 > 代码库 > 38属性的种种,只读只写属性、自动属性、静态属性、抽象属性、接口属性

38属性的种种,只读只写属性、自动属性、静态属性、抽象属性、接口属性

□ 只读属性

public class Example
{
    string name;
    public string Name
    {
        get {return name;}
    }
}

□ 只写属性

public class Example
{
    string name;
    public string Name
    {
        set {name = value;}
    }
}

□ 可读可写属性

public class Example
{
    string name;
    public string Name
    {
        get {return name;}
        set {name = value;}
    }
}

□ 自动属性

public class Example
{
    public string Name {get;set;}
}

自动只读属性:

public class Example
{
    public string Name{get; private set;}
}

自动只写属性:

public class Example
{
    public string Name{private get; set;}
}

□ 静态属性

静态属性对应一个静态字段,通常用在"单例模式"中。"单例模式"构造函数必须是私有的。

public class Example
{
    private static Example instance = new Example();
    private Example(){}

    public static Example GetInstance
    {
        get {return instance;}
    }
}

□ 抽象属性

抽象类和抽象属性。

public abstrace class Person
{
    public abstract string Name{get;set;}
}

抽象属性在子类中实现。

public class Student : Person
{
    private string name;

    public override string Name
    {
        get {return name;}
        set {name = value;}
    }
}

□ 接口属性

public interface IPerson
{
    string Name {get;set;}
}

public class Student : IPerson
{
    private string name;

    public string Name
    {
        get {return name;}
        set {name = value;}
    }
}

参考资料:
A Deep Dive into C# Property