C# 中的访问修饰符(说明符)及其程序示例

⚡ 智能摘要

C# 中的访问修饰符是关键字,用于设置类、属性或方法的可见性,限制哪些外部程序可以访问它们。构造函数会在创建类的对象时自动初始化字段值。

  • 🔐 私人: 私有访问修饰符将成员限制在同一类中,阻止任何外部程序访问。
  • 🌐 上市: public access 修饰符会将属性或方法无限制地暴露给任何外部程序。
  • 🛡️ 保护: 受保护的访问修饰符仅与从当前类继承的类共享成员。
  • 📦 内部: 内部访问修饰符允许在同一程序集中进行访问,但不允许从外部程序进行访问。
  • ????️ 构造函数: 构造函数与类名相同,不接受返回类型,并在创建对象时初始化字段。
  • 🤖 人工智能辅助: GitHub Copilot 生成修饰符和构造函数,而 ML.NET 将类属性映射到模型特征。

C# 中的访问修饰符(说明符)

C# 中的访问修饰符(说明符)是什么?

访问修饰符 在 C# 中,访问修饰符(Access Shortifiers)是用于定义类属性或方法可见性的关键字。当您不希望其他程序访问类的属性或方法时,可以使用访问修饰符。访问修饰符会限制访问权限,使其他程序无法查看类的属性或方法。

C# 中有 6 种类型的访问修饰符:

  • 私做
  • 公共
  • 保护
  • 全内走线
  • 受保护的内部
  • 私人保护

我们将通过下面解释的程序示例了解 C# 中的主要访问修饰符。

C# 中的私有访问修饰符

当 Private 访问修饰符附加到属性或方法时,意味着这些成员不能从任何外部程序访问。

私有访问修饰符的示例

让我们举一个例子看看当我们使用私有访问修饰符时会发生什么。

让我们修改 Tutorial.cs 文件中的当前代码。在 SetTutorial 方法中,让我们将 public 关键字更改为 private。

私有访问修饰符

现在让我们切换到 Program.cs 文件。您会注意到 SetTutorial 方法下有一条红色波浪线。

由于我们现在已在 Tutorial 类中将 SetTutorial 方法声明为私有方法,因此 Visual Studio 已检测到此情况。它通过突出显示来告知用户,现在该方法在 Program.cs 文件中不起作用。

私有访问修饰符

C# 公共访问修饰符

当 Public 访问修饰符附加到属性或方法时,这意味着可以从任何外部程序访问这些成员。我们在前面的例子中已经看到了这一点。

公共访问修饰符的示例

C# 公共访问修饰符

由于我们已在 Tutorial 类中将方法定义为公共方法,因此可以从 Program.cs 文件访问它们。

C# 中的受保护访问修饰符

当 Protected 访问修饰符附加到属性或方法时,意味着这些成员只能由 类继承 从目前 。这将在继承类中详细解释。

C# 内部访问修饰符

当内部访问修饰符附加到属性或方法时,这些成员只能由内部程序访问,而不能由外部程序访问。

C# 构造函数

C# 构造函数用于在创建相应对象时初始化类字段的值。构造函数是一种与类同名的方法。如果在类中定义了构造函数,那么它将提供创建对象时调用的第一个方法。假设我们有一个名为 Employee 的类。构造函数方法也将被命名为 Employee()。

关于构造函数方法需要注意以下关键事项

  1. 构造函数的 C# 默认访问修饰符需要设为公共。
  2. 构造函数方法不应该有返回类型。

C# 构造函数示例

现在让我们看看如何在代码中加入构造函数。我们将在创建对象时使用构造函数将 TutorialID 和 TutorialName 字段初始化为一些默认值。

步骤1) 第一步是为我们的 Tutorial 类创建构造函数。在此步骤中,我们将以下代码添加到 Tutorial.cs 文件中。

C# 构造函数

Code 解释:-

  1. 我们首先添加一个与类同名的新方法。由于它与类同名,因此 C# 将其视为构造函数方法。因此,现在每当调用方法创建此类的对象时,都会默认调用此方法。
  2. 在 Tutorial 构造函数中,我们将 TutorialID 的值设置为 0,将 TutorialName 的值设置为“Default”。因此,无论何时创建对象,这些字段都将始终具有这些默认值。

现在让我们切换到 Program.cs 文件并删除调用 SetTutorial 方法的行。这是因为我们只想查看构造函数的工作原理。

C# 构造函数

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Tutorial
 {
  public int TutorialID; 
  public string TutorialName;
  
  public Tutorial()
  {
   TutorialID=0;
   TutorialName="Default";
  }
  public void SetTutorial(int pID,string pName) 
  {
   TutorialID=pID;
   TutorialName=pName;
  }
  public String GetTutorial()
  {
   return TutorialName;
  }
  
  static void Main(string[] args) 
  {
   Tutorial pTutor=new Tutorial();
    
   Console.WriteLine(pTutor.GetTutorial());
    
   Console.ReadKey(); 
  }
 }
}

Code 解释:-

  1. 第一步是为 Tutorial 类创建一个对象。这可以通过“new”关键字完成。
  2. 我们使用 Tutorial 类的 GetTutorial 方法来获取 TutorialName。然后通过 Console.WriteLine 方法将其显示到控制台。

如果正确输入上述代码并执行程序,将显示以下输出。

输出:

C# 构造函数

从输出中,我们可以看到构造函数确实被调用,并且 TutorialName 的值被设置为“Default”。

注意: 此处,值“default”是从构造函数中获取的。

常见问题

如果没有指定修饰符,则类和结构体成员默认为私有成员,顶级类型默认为内部成员,它们将保持隐藏状态,直到您扩大它们的可见性为止。

受保护的成员会暴露给同一类及其任何派生类,即使跨越不同的程序集。内部成员则仅暴露给同一程序集中的类型。

受保护的内部访问允许从同一程序集或任何派生类访问。私有受保护的访问则更为严格,仅允许同一程序集中的派生类访问。

C# 支持默认构造函数、带参数构造函数、复制构造函数、静态构造函数和私有构造函数。它们可以初始化对象的字段、运行一次类设置,或者克隆另一个对象的值。

静态构造函数不接受任何修饰符或参数。它只运行一次,在创建第一个对象或加载静态成员之前执行,用于初始化静态字段。

是的。一个类可以定义多个具有不同参数列表的构造函数。编译器会选择与传递给 `new` 的参数匹配的构造函数。

是的。GitHub Copilot 会根据 Visual Studio 中的类名或注释来建议修饰符、构造函数和字段初始化器。 VS Code. Rev查看每个建议的可见性级别。

ML.NET 将 C# 数据类的公共属性映射到模型特征和标签。公共的 getter 和 setter 方法允许它在训练期间读取这些值。

总结一下这篇文章: