📜  C#属性(1)

📅  最后修改于: 2023-12-03 15:00:17.477000             🧑  作者: Mango

C#属性

在C#中,属性(Property)是一种特殊的C#语言元素,它们充当了一种访问对象中数据的方式。属性可以看作是特殊的方法,通过访问器(Getter和Setter)的形式来操作私有字段。底层的方法通常不需要显式地调用。属性基本上是对字段的封装,以允许更好的控制数据的访问。

声明属性

在C#中,使用属性可以隐藏对象的实现细节,同时在对象之间提供一种标准的接口。声明属性时,请使用以下语法:

修饰符 数据类型 属性名 { get; set; }

其中修饰符可以为private、public、protected等,表示属性的访问级别;数据类型为属性的返回值类型,可以为任意C#数据类型;属性名为属性的名称,要遵循C#中变量的命名规范。get 和 set 访问器是用于读取和写入属性的方式。如果只想读取属性,则可以省略set访问器,反之亦然。例如:

public int Age { get; set; }

上面的示例声明了一个公共属性,该属性的类型为int,名为Age。该属性可以使用get和set访问器进行读取和写入。注意,下面两个示例是等效的:

public int Age { get; set; }
public int Age { get { return Age; } set { Age = value; } }
读取和写入属性值

当您读取属性值时,实际上是调用get访问器。当您写入属性值时,实际上是调用set访问器。例如:

Person p = new Person();
p.Age = 30;  // 调用set访问器来设置属性值
int age = p.Age;  // 调用get访问器来获取属性值

在上面的示例中,我们首先创建了一个名为p的Person对象,然后使用set访问器设置了Age属性的值为30。接下来,我们使用get访问器从Age属性读取该值,并将其存储在整型变量age中。

只读属性

如果只想让属性具有getter访问器,而没有setter访问器,则可以将属性声明为只读的。例如:

public int Year { get { return DateTime.Now.Year; } }

上面的示例声明了一个名为Year的只读属性。该属性使用get访问器来获取当前年份,并且不允许使用set访问器进行更改。

初始化属性

您可以在C#中使用构造函数初始化属性,但是,值得注意的是,您必须在构造函数中将属性初始化为适当的初始值。例如:

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

    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }
}

Person p = new Person("Tom", 25);

在上面的示例中,我们使用带有两个参数(名称和年龄)的构造函数来创建一个Person对象。在构造函数中,我们使用Name和Age属性来初始化Person对象的属性。

总结

属性是C#语言中的基本元素之一,它们充当了一种访问对象中数据的方式。属性可以看作是特殊的方法,通过访问器(Getter和Setter)的形式来操作私有字段。在声明属性时,我们需要使用修饰符、数据类型和属性名。读取属性值时,C#将调用get访问器;写入属性值时,C#将调用set访问器。只读属性只有get访问器,没有set访问器。在构造函数中,我们可以使用属性初始化对象的属性。