在C#中,属性(Property)是一种特殊的成员,它允许在类中定义用于访问对象的值的成员。属性通常用于封装类的字段(Field)或提供计算得到的值,以便以一致的方式访问和修改数据。以下是关于 C# 属性的一些基本知识:

基本属性
class Person
{
    private string name;

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

在这个例子中,Person 类有一个 Name 属性,它对私有字段 name 进行了封装,允许通过 get 和 set 方法访问和修改 name 的值。

自动属性
class Person
{
    // 自动属性
    public string Name { get; set; }
}

自动属性是一种简化的语法,它不需要显式地定义私有字段,编译器会在背后自动生成一个匿名的字段。

只读属性
class Circle
{
    private double radius;

    // 只读属性
    public double Area
    {
        get { return Math.PI * radius * radius; }
    }

    public Circle(double r)
    {
        radius = r;
    }
}

在这个例子中,Area 属性只有 get 方法,因此它是只读的,不能在外部代码中对其进行赋值。

属性的其他用法

  •  属性初始化器:
  Person person = new Person
  {
      Name = "John"
  };

  •  在属性中使用表达式体:
  class Rectangle
  {
      public double Length { get; set; }
      public double Width { get; set; }

      // 使用表达式体定义的只读属性
      public double Area => Length * Width;
  }

  •  属性事件(Property Events):
  class Temperature
  {
      private int temperature;

      // 温度变化事件
      public event EventHandler TemperatureChanged;

      public int CurrentTemperature
      {
          get { return temperature; }
          set
          {
              if (value != temperature)
              {
                  temperature = value;
                  OnTemperatureChanged();
              }
          }
      }

      protected virtual void OnTemperatureChanged()
      {
          TemperatureChanged?.Invoke(this, EventArgs.Empty);
      }
  }

属性是面向对象编程中的重要概念,它提供了一种更灵活、封装的方式来访问和修改类的成员。


转载请注明出处:http://www.pingtaimeng.com/article/detail/6363/C#