C#中{get;set;}的具体使用

1. 属性(Property)的基本概念

在C#中,属性(Property)是一种特殊的类成员,用于封装对私有字段的访问。它们提供了一种安全且方便的方式来读取和写入私有字段的值。属性通常由get和set访问器定义,用于获取和设置字段的值。

属性的语法如下:

[访问修饰符] 数据类型 属性名

{

get { return [字段名]; }

set { [字段名] = value; }

}

在访问器中,get用于获取字段的值,set用于设置字段的值。[字段名]是一个私有字段,它通常与属性同名,用于存储属性的值。value表示赋给属性的值。

2. 属性的简化语法

C#提供了一种更简化的属性语法,可以更方便地定义只有get或set访问器的属性。

2.1 只有get访问器的属性

[访问修饰符] 数据类型 属性名 { get; }

例如,我们可以定义一个只读属性来获取当前温度的值:

public class Thermometer

{

private double temperature;

public double Temperature

{

get { return temperature; }

}

}

通过调用Thermometer对象的Temperature属性,我们可以获取当前温度的值。

2.2 只有set访问器的属性

[访问修饰符] 数据类型 属性名 { set; }

例如,我们可以定义一个只写属性来设置当前温度的值:

public class Thermometer

{

private double temperature;

public double Temperature

{

set { temperature = value; }

}

}

通过调用Thermometer对象的Temperature属性,并给它赋值,我们可以设置当前温度。

3. 属性的高级用法

除了基本的get和set访问器之外,属性还可以具有其他特性,如只读、写入检查和计算属性。

3.1 只读属性

只读属性只有get访问器,不能通过属性对应的字段来设置属性的值。

public class Thermometer

{

private double temperature;

public double Temperature

{

get { return temperature; }

}

}

在只读属性中,我们可以使用return关键字来返回字段的值。

3.2 写入检查

在set访问器中,我们可以添加条件来检查赋给属性的值。

public class Thermometer

{

private double temperature;

public double Temperature

{

get { return temperature; }

set

{

if (value < -273.15)

{

throw new ArgumentOutOfRangeException("Temperature cannot be below absolute zero.");

}

temperature = value;

}

}

}

在上面的例子中,如果赋给Temperature属性的值小于绝对零度(-273.15摄氏度),则会抛出一个异常。这样可以确保属性的值符合一定的约束条件。

3.3 计算属性

计算属性是指没有对应的字段,而是通过计算得到结果的属性。

public class Thermometer

{

private double celsius;

public double Fahrenheit

{

get { return celsius * 9 / 5 + 32; }

set { celsius = (value - 32) * 5 / 9; }

}

}

在上面的例子中,我们定义了一个Fahrenheit属性,它通过计算摄氏度的值转换为华氏度的值。当给Fahrenheit属性赋值时,它会将华氏度的值转换为摄氏度的值。

4. 使用属性的好处

属性的使用有以下几个好处:

4.1 封装

属性允许我们通过get和set访问器来封装对私有字段的访问。这样可以隐藏实现细节,只暴露必要的接口。

4.2 数据验证

我们可以在set访问器中添加逻辑来验证赋给属性的值是否符合要求。这可以确保数据的有效性。

4.3 计算属性

属性允许我们通过计算得到属性的值。这样可以避免手动计算属性的值,提高代码的可读性和易用性。

5. 总结

在C#中,属性提供了一种安全且方便的方式来封装对私有字段的访问。它们通常由get和set访问器定义,用于获取和设置字段的值。属性可以具有只读、写入检查和计算等特性,使得代码更加清晰、可读和易用。通过使用属性,我们可以封装实现细节、验证数据有效性,并通过计算得到属性的值。

后端开发标签