基本属性
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#