📜  c# property 属性 - C# (1)

📅  最后修改于: 2023-12-03 14:39:43.881000             🧑  作者: Mango

C# Property 属性

在 C# 中,属性是一种可读写或只读的特殊成员变量。属性可以帮助我们隐藏类的内部实现,提供一种间接访问类成员的方式,并且可以在读取和写入属性的值时检查和验证数据。

声明一个属性

在 C# 中,属性的声明通常由两个访问器组成:get 访问器和 set 访问器。 get 访问器用于读取属性的值,而 set 访问器用于设置属性的值。以下是一个属性的基本声明示例:

public class Person
{
    private string name;

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

在上面的示例中,我们声明了 Person 类,并用 private 访问修饰符定义了一个私有变量 name。然后我们声明了一个 Name 属性,该属性公开了该变量,以便可以从外部访问它。 get 方法返回属性值,set 方法接受一个参数 value 用于设置属性的值。

注意:属性和字段之间的区别在于:属性提供读写操作的方法,而字段不提供。因此,在修改属性值时,我们可以添加自定义逻辑以确保数据的有效性。

自动属性

从 C# 3.0 开始,我们可以使用自动属性来简化我们的属性声明。自动属性允许我们在不提供 getset 方法的情况下,自动生成它们。以下是一个自动属性的示例:

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

上面的示例将属性声明为 public,并自动实现了 getset 方法。

只读属性

在某些情况下,我们可能需要声明一个只读属性,只允许读取属性值,而不允许设置属性值。要声明只读属性,请省略 set 访问器。以下是一个只读属性的示例:

public class Person
{
    private readonly string name;

    public Person(string name)
    {
        this.name = name;
    }

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

在上面的示例中,我们声明了一个 Person 类,并把 name 变量设置为只读的。我们在构造函数中设置变量的值,并在 Name 属性的 get 访问器中返回变量的值,但省略了 set 访问器。

总结

在 C# 中,属性是一种方便的机制,用于访问对象的各种状态。我们可以使用属性来提供用户友好的访问方式,并可以在属性访问期间检查和验证数据。通过声明只读属性和使用自动属性,我们可以进一步简化属性声明的代码。