C# 封装2025 年 8 月 30 日 | 阅读 9 分钟 封装是一种将数据和方法封装到单个单元中的技术。它用于在类中创建数据成员和成员函数的组。这个封装的类包含用于读写数据的 getter 和 setter 属性。它包括一个使用访问修饰符限制直接访问数据的功能,这些修饰符提供受控访问。 ![]() 在C# 编程中,封装实现了数据隐藏,这意味着它隐藏了类的内部细节,并通过公共方法公开了基本细节。它允许保留数据并提高数据安全性,这使得代码更易于维护和理解。 封装语法它具有以下语法: 在这个语法中,
C# 封装示例让我们举一个例子来说明 C# 中的封装。 示例编译并运行输出 ID = 101 Name = George Email = George@example.com 说明 在这个例子中,我们创建了一个 Employee 类,通过将其数据成员(id、name、email)声明为私有来隐藏它们。之后,我们通过充当 getter 和 setter 的公共属性(ID、Name、Email)提供对这些字段的访问。它确保受控访问并保护内部数据,同时仍然允许从类外部进行安全的读/写操作。 为什么我们需要 C# 中的封装有几种情况表明 C# 中需要封装。其中一些如下:
C# 封装中的访问修饰符在 C# 编程中,访问修饰符指定了类成员(字段、方法、属性等)的访问方式和位置。访问修饰符是封装的重要组成部分,封装是面向对象编程 (OOP) 的四个基本构建块之一。C# 主要有五种访问修饰符: ![]() 在这里,我们将逐一讨论这些访问修饰符。 1) Public 访问修饰符Public 修饰符是 C# 中最常访问的访问说明符。它可以从任何地方访问,从类内部和外部。任何其他代码都可以访问同一程序集或引用它的另一个程序集中的类型或成员。 C# Public 访问修饰符示例 让我们举一个例子来说明 C# 封装中的公共访问修饰符。 示例编译并运行输出 Car Model: Porsche 说明 在这个例子中,我们创建了一个 Car 类。之后,我们将 Model 字段声明为公共的,可以直接从 Car 类外部访问和修改。最后,我们使用 ShowModel() 方法显示在主函数中定义的汽车模型。 2) Private 访问修饰符Private 访问说明符将其可访问性限制在声明它们的类或结构中。它们不能在类外部访问,并且是限制性最高的访问级别。 C# 中 Private 访问修饰符示例 让我们举一个例子来说明 C# 中的 private 访问修饰符。 示例编译并运行输出 Balance: 5000 Balance after withdrawal: 4000 说明 在此示例中,我们使用带有私有 balance 字段的 BankAccount 类以防止直接访问。公共方法允许存款、取款和检索余额。在 Main 方法中,创建了一个帐户实例,存入和取出资金,并显示余额。 3) Protected 访问修饰符Protected 访问说明符的成员可以在同一类中以及由派生类访问。它使子类能够访问其基类的成员变量和成员函数。它通常用于实现具有受控访问的继承。 C# 中 Protected 访问修饰符示例 让我们举一个例子来说明 C# 中的 protected 访问修饰符。 示例编译并运行输出 Student Name: Michael 说明 在此示例中,我们演示了继承和封装。我们创建了一个 Person 类,其中包含一个受保护的 name 字段,该字段不能直接访问,但可以在派生类 Student 中使用。之后,SetName 方法为 name 赋值,ShowName 显示它。在 Main 方法中,Student 实例设置并显示 name。 4) Internal 访问修饰符Internal 访问修饰符提供在声明它们的程序中访问,并在同一程序集级别访问,但不能从另一个程序集访问。 C# 中 Internal 访问修饰符示例 让我们举一个例子来说明 C# 中的 internal 访问修饰符。 示例编译并运行输出 Sum: 33 Product: 68 说明 在此示例中,我们创建了一个带有加法和乘法方法的 internal 类 Calculator。由于该类是 internal 的,因此它仅在同一程序集内可见。在 Main 方法中,实例化一个 Calculator 对象并用于打印加法和乘法结果。 5) Protected Internal 访问修饰符在 C# 编程中,protected internal 访问修饰符是 protected 和 internal 访问修饰符的组合。protected internal 访问修饰符成员可以在同一程序集内和派生类中访问,即使这些派生类位于不同的程序集中。 C# 中 Protected Internal 访问修饰符示例 让我们举一个例子来说明 C# 中的 protected internal 访问修饰符。 示例编译并运行输出 Manager Name: Jhonson Manager Salary: 80000 Employee Name: David Employee Salary: 50000 说明 在此示例中,我们创建了一个 Employee 类并在其中声明了两个成员。之后,Name 和 Salary 成员可以在派生类 (Manager) 中访问,并且可以直接从 Program 类访问,因为它们位于同一程序集中。 访问说明符比较表下表显示了 C# 中这些说明符之间的比较。
通过属性进行 C# 封装在 C# 中,属性是使用封装的首选方法。我们可以将字段定义为私有,并通过 get 和 set 属性提供受控访问,而不是直接公开字段。 使用属性进行 C# 封装示例让我们举一个例子来说明使用 C# 属性的封装。 示例编译并运行输出 Name of the Employee : Jackson Age of the Employee : 42 Invalid Name! Invalid Age! Must be between 1 and 60. 说明 在此示例中,我们演示了通过将 name 和 age 作为字段的私有成员进行封装,并通过公共属性 Name 和 Age 揭示它们。这些属性使用 get 返回值,并使用 set 在赋值前验证有效输入。在 Main() 函数中,使用属性提供值,接受并打印有效输入,而无效输入则打印错误消息。 C# 中封装的优点C# 中封装的几个优点如下:
C# 中封装的缺点C# 中封装的几个缺点如下:
C# 封装常见问题1) C# 中的封装是什么? 在 C# 编程中,封装是将数据(字段)和操作(方法)分组到单个单元(类)中的过程。它还涉及阻止直接访问类成员以维护数据完整性。 2) 为什么封装在 C# 中很重要? 它通过隐藏内部状态并强制所有交互都通过对象的方法来进行,从而保护了对象的完整性。它阻止未经授权的使用和滥用,从而提供受控的访问和更改。 3) 在 C# 中没有属性可以封装吗? 可以,使用私有字段和 getter 和 setter 方法。但现在推荐使用属性(get 和 set)。 4) 封装与抽象有何不同? 封装: 它隐藏了存储/修改数据的内部实现细节(侧重于数据保护)。 抽象: 它隐藏了方法实现细节,只公开所需行为(侧重于功能)。 5) 我们最常使用哪个访问修饰符进行封装? 在 C# 编程中,最常用于封装的访问修饰符是 private 访问修饰符,因为它通过限制对字段的直接访问来确保数据隐藏。根据所需的公开级别,可以使用其他访问修饰符。 下一主题C# 字符串 |
我们请求您订阅我们的新闻通讯以获取最新更新。