📅  最后修改于: 2023-12-03 14:39:43.881000             🧑  作者: Mango
在 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 开始,我们可以使用自动属性来简化我们的属性声明。自动属性允许我们在不提供 get
和 set
方法的情况下,自动生成它们。以下是一个自动属性的示例:
public class Person
{
public string Name { get; set; }
}
上面的示例将属性声明为 public
,并自动实现了 get
和 set
方法。
在某些情况下,我们可能需要声明一个只读属性,只允许读取属性值,而不允许设置属性值。要声明只读属性,请省略 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# 中,属性是一种方便的机制,用于访问对象的各种状态。我们可以使用属性来提供用户友好的访问方式,并可以在属性访问期间检查和验证数据。通过声明只读属性和使用自动属性,我们可以进一步简化属性声明的代码。