C# 属性2025 年 9 月 10 日 | 阅读 10 分钟 在 C# 编程语言中,属性是一种特殊类型的类成员,用于提供一种高效的技术来读取、写入和计算私有字段的值。C# 属性是字段的扩展,访问方式与字段相同。这些属性充当字段和方法之间的桥梁,提供对类数据的受控访问。 ![]() 属性在 OOP 中普遍使用,因为它们支持封装和抽象。属性具有用于设置、获取或计算其值的访问器。这些访问器不包含任何存储位置。 为什么要在 C# 中使用属性?C# 属性有多种用途。其中一些如下:
语法它具有以下语法: 在这个语法中,
属性的简单示例让我们举一个例子来说明 C# 中的属性。 示例编译并运行输出 Michael 说明 在此示例中,我们使用了一个名为 Name 的属性,它提供对私有字段 name 的受控访问。之后,我们使用 set 访问器赋值“Michael”,并使用 get 访问器检索此值。 C# 中的访问器在 C# 编程语言中,访问器是属性内部的代码块,它指定属性如何与类的私有字段交互。访问器通过规范化类字段如何从类外部读取或写入来强制执行封装。它确保内部数据保持安全,并可以以受控方式访问。 访问器类型在 C# 中,主要有两种类型的访问器。它们如下: ![]() 在这里,我们将逐一讨论这些访问器。 1) Get 访问器在 C# 编程语言中,get 访问器返回私有字段的值。当我们希望应用程序的其他部分可以读取值而无需更改它时,它很有用。 C# Get 访问器示例 让我们举一个例子来演示 C# 中的 get 访问器。 示例编译并运行输出 The Employee ID is: 101 说明 在此示例中,我们使用了 EmployeeId 属性,该属性允许访问私有字段 employeeId,但禁止从类外部进行修改。之后,构造函数将字段初始化为 101,get 访问器检索并打印它。 2) Set 访问器在 C# 中,set 访问器为私有字段指定一个值。每当我们为属性赋值时,就会调用它。术语 value 在 set 块内用于表示传入数据。 C# Set 访问器示例 让我们举一个例子来演示 C# 中的 set 访问器。 示例编译并运行输出 Password is set (hidden for security). 说明 在此示例中,我们使用了 Password 属性,它允许我们指定一个私有字段,程序会在不泄露密码的情况下确认它。它通过限制外部访问敏感数据来维护安全性,同时允许输入。 C# 中的访问器可访问性C# 还允许直接将访问修饰符(例如 private、protected)应用于访问器,但需遵循某些规则。
属性类型C# 有六种主要类型的属性,每种属性都服务于封装字段的不同访问要求。 ![]() 在这里,我们将逐一讨论这些属性。 1) 只读属性在 C# 编程中,只读属性提供对私有字段值的受控访问,同时防止从类外部进行更改。它只包含 get 访问器。 语法 它具有以下语法: C# 只读属性示例 让我们举一个例子来说明 C# 中的只读属性。 示例编译并运行输出 No. of Employees: 3 说明 在 Employee 类中,Counter 属性是只读的,只包含一个 get 访问器,该访问器返回一个静态字段,用于计算生成的 Employee 对象的数量。 2) 只写属性在 C# 编程中,只写属性允许我们为字段赋值,但阻止外部读取器访问它。它只包含 set 访问器。 语法 它具有以下语法: C# 只写属性示例 让我们举一个例子来说明 C# 中的只写属性。 示例编译并运行输出 Hashed Password (internal use): U2VjdXJlMTIz 说明 在此示例中,我们使用了 UserAccount 类,该类定义了一个只写属性 Password,其中包含一个 set 访问器,该访问器在内部对密码进行编码和存储。它避免了外部程序访问关键数据,从而在允许受控输入的同时保证了安全性。 3) 读写属性读写属性是 C# 属性中最流行的类型。它实现了 get 和 set 访问器,允许读写操作。 语法 它具有以下语法: C# 只读属性示例 让我们举一个例子来说明 C# 中的只读属性。 示例编译并运行输出 Salary must be at least 30000. Employee Name is: Alice Employee Salary is: 45000 说明 在此示例中,我们使用了 Name 属性,它是一个自动实现的属性,允许直接读写。之后,Salary 属性使用私有支持字段和 get/set 访问器;set 访问器强制规定工资必须至少为 30,000,否则会显示警告。 4) 自动实现属性在 C# 编程中,当属性访问器不需要任何额外逻辑时,自动实现属性会简化语法。编译器会创建一个隐式的匿名支持字段。 语法 它具有以下语法: C# 自动实现属性示例 让我们举一个例子来说明 C# 中的自动实现属性。 示例编译并运行输出 The title of the book is: C# In Depth The author's name is: Jon Skeet The year of publication is: 2023 说明 在此示例中,Book 类的 Title、Author 和 YearPublished 属性是自动实现的,它们提供了直接的读写访问,而无需显式支持字段。 5) 静态属性在 C# 中,静态属性分配给整个类,而不是任何单个实例。这意味着静态属性的值由类的所有对象共享。如果我们要使用静态属性,则还必须将支持字段(如果存在)设置为静态。静态属性经常用于实用程序类、全局设置和单例。 语法 它具有以下语法: C# 静态属性示例 让我们举一个例子来说明 C# 中的静态属性。 示例编译并运行输出 Current Interest Rate: 4.5% Current Interest Rate: 4.5% Current Interest Rate: 5.0% Current Interest Rate: 5.0% 说明 在此示例中,我们使用了 Bank 类中名为 InterestRate 的静态属性,该属性由类的所有实例共享。之后,输出显示更改静态属性会影响所有对象。 6) 抽象属性在 C# 编程语言中,抽象属性是在抽象类或接口中声明但未实现的属性。它要求派生类覆盖并实现属性访问器。它促进了结构的一致性,同时允许子类具有独特的行为。 C# 抽象属性示例 让我们举一个例子来演示 C# 中的抽象属性。 示例编译并运行输出 Circle Area: 78.5398163397448 Circle Perimeter: 31.4159265358979 说明 在此示例中,我们使用了抽象类 Shape,它声明了两个抽象属性:area 和 perimeter,但未实现它们。Circle 类派生自 Shape 并根据半径实现这些属性的具体逻辑。 结论总之,C# 属性提供了一种访问和管理类字段的有效方法,同时保持了封装和抽象的原则。它们允许我们控制数据如何读取、写入或计算,而无需暴露内部实现细节。借助不同类型的属性,C# 提供了处理各种场景的灵活性。在理解 C# 属性后,我们可以编写更安全、更易于维护和更易于理解的代码。 C# 属性常见问题1) C# 中的属性是什么? 在 C# 编程语言中,属性是一种类成员,它提供了一种灵活的方法来读取、写入或计算私有字段的值。 2) C# 中的属性可以只读或只写吗? 是的,如果使用 get 访问器,它允许只读。另一方面,如果使用 set 访问器,它允许只写。 3) 什么是自动实现属性? 在 C# 中,这是一种快捷方式,编译器会自动生成支持字段。 4) C# 中的属性可以在 get/set 中包含逻辑吗? 是的,属性可以包含用于验证或计算的自定义逻辑。 5) C# 中的属性是方法还是变量? 在 C# 中,属性是特殊的方法,可以像访问字段一样访问,这为我们提供了类似方法的控制,但使用字段语法。 下一主题C# 继承 |
我们请求您订阅我们的新闻通讯以获取最新更新。