📜  C#-属性(1)

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

C# 属性

在 C# 编程语言中,属性(Property)是一种特殊的方法,用于访问私有字段的值、设置私有字段的值和执行其他操作。属性可以看作是字段的一种扩展,可以为其添加访问控制、有效性检查和计算值等功能。

声明属性

使用 C# 中的 property 关键字可以定义一个属性。属性定义中需要指定 getter 和 setter 方法,这些方法可以是 publicprivateprotectedinternal 访问级别。

public class MyClass
{
    private int myField;

    public int MyProperty
    {
        get { return myField; }
        set { myField = value; }
    }
}

在上面的示例中,MyProperty 是一个为 myField 字段定义的属性。get 方法返回 myField 的值,set 方法用于设置 myField 的值。

自动属性

在 C# 3.0 中,引入了自动属性(Auto-Implemented Properties)的概念。自动属性可以让开发者在不使用属性字段的情况下快速定义属性。

public class MyClass
{
    public int MyProperty { get; set; }
}

在上面的示例中,定义了一个名为 MyProperty 的自动属性。这个属性没有定义任何字段,编译器会自动为属性生成一个后备字段,并在编译时将其添加到代码中。

使用自动属性可以简化代码的编写,但是无法在 getter 和 setter 方法中执行其他操作。

只读属性

只读属性(Read-Only Properties)是指只包含 get 方法的属性。只读属性一旦在构造函数中初始化后,不允许修改。

public class MyClass
{
    public int MyProperty { get; }

    public MyClass(int myValue)
    {
        MyProperty = myValue;
    }
}

在上面的示例中,定义了一个只读属性 MyProperty,并在构造函数中初始化它。

属性访问器

属性访问器是指 getter 和 setter 方法,它们可以用于实现属性的读取和写入操作。属性访问器的访问级别必须与属性相同。

public class MyClass
{
    private int myField;

    public int MyProperty
    {
        get { return myField; } // getter 访问器
        set { myField = value; } // setter 访问器
    }
}

在上面的示例中,MyProperty 属性包含了一个 getter 和一个 setter 访问器。getter 方法返回 myField 字段的值,setter 方法将传入的值设置为 myField 的值。

属性特性

属性特性可以向属性添加元数据,并控制属性的行为。比如,可以使用 [Range] 特性来限制属性接收的值的范围。

public class MyClass
{
    [Range(0, 100)]
    public int MyProperty { get; set; }
}

在上面的示例中,MyProperty 属性添加了一个名为 Range 的特性,用于限制属性接收的值的范围为 0 到 100。

总结

属性是 C# 中的一种重要的特性,可以方便地访问和操作字段。属性定义中需要指定 getter 和 setter 方法,可以使用自动属性、只读属性和属性特性来扩展其功能。掌握属性的使用可以帮助开发者编写更加简洁、可读性更高的代码。