C# 中的私有构造函数2024 年 8 月 29 日 | 4 分钟阅读 在 C# 中,通过使用私有访问修饰符生成私有构造函数。当一个类有一个私有构造函数并且没有额外的公共构造函数时,我们无法在该类外部构造该类的对象。但是,我们可以在同一类中为这些类创建对象。 因此,最重要的一点是,当我们尝试从类外部创建对象和访问成员时,诸如生成对象、访问成员等的限制可能会生效。 在 C# 中使用同一类内的私有构造函数创建对象不能在类外部创建实例。但是,可以在类内部创建。请查看下面的示例以获取更多信息。我们在 Program 类中定义了私有构造函数,但 Main 方法也在相同的 Program 类中定义。正如我们所见,我们正在生成 Program 类的实例并在 Main 方法中运行 Method1。 文件名:Constructor.c 输出 This shows the Private Constructor The Method1 is get Called 在 C# 中从类外部创建实例最重要的一点是,类应该有一个公共构造函数,这样我们就可以独立于类创建实例。类是否有私有构造函数并不重要。但是,如果类有一个公共构造函数,我们可以生成类实例并使用该公共构造函数执行公共非静态函数。 请查看下面的示例以更好地理解。Test 类同时具有私有和公共构造函数以及一个公共函数。我们现在正在使用 Program 类的 Main 函数(独立于 Test 类)创建 Test 类的实例并运行 Method1 方法。 示例 输出 Public constructor The Method1 is get Called 如果类跳过公共构造函数而只有私有构造函数会发生什么?那么,我们将无法在类外部创建实例。请参阅下面列出的示例以更好地理解。Test 类只有一个私有构造函数,当我们使用 Main 方法中的私有构造函数为 Test 类创建实例时,我们会遇到编译时错误。 示例 输出 prog.cs(9,25): error CS0122: `PrivateConstructorDemo.Tests.Tests()' is inaccessible due to its protection level prog.cs(17,17): (Location of the symbol related to previous error) Compilation failed: 1 error(s), 0 warnings 说明 正如您所看到的,我们收到了消息 'Test.Tests()' 不可访问,因为它受保护,这很有道理,因为 Program 类中的 Tests 类 Tests() 构造函数由于其安全级别(私有)而可用。 首先要记住的是,如果一个类缺少公共构造函数,私有构造函数会限制除了该类之外的任何人都无法实例化该类。如果它包含一个公共构造函数,我们可以在类外部创建一个新实例。在同一类中生成实例没有限制。 用例:如果我们不希望该类能够从类外部实例化,请在该类中的任何公共构造函数位置添加一个私有构造函数。 C# 中私有构造函数限制继承这表明一个类在没有私有构造函数的情况下不能被继承。这部分也是正确的。让我们用几个例子来证明这一点。 如果一个类有一个私有构造函数和任何其他公共构造函数,则可以继承该类。子类需要一个公开可用的构造函数来形成父子关系。也就是说,无论类是否有私有构造函数,如果它有公共构造函数,我们都可以继承它。 请查看下面的示例以更好地理解。在 Parent 类中,我们有两个对象构造函数,一个私有和一个公共。 示例 输出 The Public constructor of the parent class The Public constructor of the child class |
C# 是 Microsoft 开发的一种现代、面向对象的编程语言。它广泛用于开发各种应用程序,包括桌面、Web 和移动应用程序,以及游戏,并且它特别受 Windows 应用程序开发的欢迎。在本文中,我们将看到一些...
阅读 4 分钟
在本文中,我们将讨论 C# 中的 Object.ReferenceEquals() 函数,包括其语法、参数、示例和优点。什么是 Object.ReferenceEquals() 方法?静态 Object.ReferenceEquals() 函数在 C# 中由 Object 类提供,该类是语言中所有其他类型的基类……
阅读 3 分钟
什么是抽象工厂设计模式?Pattern 表示设计,Factory 表示产品生产的地点,Abstract 表示某些信息的隐藏。因此,一种称为抽象工厂模式的软件设计模式提供了一种封装一组不同工厂的方法...
阅读 16 分钟
C# 中的多播委托简介:在 C# 中,委托作为实现观察者设计模式的强大机制,使对象能够通知多个观察者有关更改或事件。委托的基本作用是创建方法指针,充当函数的引用,并促进实现...
阅读 13 分钟
C# 中的 Directory.exits() 函数属于 System.IO 命名空间。它使开发人员能够确定给定路径中是否存在目录。此方法根据目录是否存在返回布尔值(true 或 false)。其主要任务是...
阅读 6 分钟
Th? Singl?ton 创?模式是 C# 中的创?设计模式之一。它的主要目的是确?一个类只?有?个实例,同时为该实例提供?个全局访问点。当您想控制访问时,此模式很有用...
阅读 8 分钟
在本文中,我们将讨论 C# 中的“SortedList.ContainsKey()”方法及其语法、参数和示例。什么是 SortedList.ContainsKey() 方法?SortedList.ContainsKey() 方法是 C# 编程语言中的一个函数。它是 SortedList 类的一部分,该类表示按排序键/值对的集合...
阅读 4 分钟
在本文中,我们将讨论 C# 中 struct 和 class 之间的区别。但在讨论其区别之前,我们必须了解 C# 中的 struct 和 class。类和结构可以在 C# 中用于构建自定义数据类型,但它们存在重要差异……
7 分钟阅读
C# 是一种功能强大且用途广泛的编程语言,拥有丰富的工具。Type 就是 C# 中的一个这样的工具。GetDefaultMembers() 函数是反射的一个重要组成部分。程序在运行时检查其结构的能力...
阅读 4 分钟
在本文中,您将了解 C# 中的 Console.TreatControlCAsInput 属性及其语法、参数和示例。什么是 Console.TreatControlCAsInput 属性?属性“Console.TreatControlCAsInput”可以获取或修改一个值,该值指示操作系统是否将 Control 修饰键和 C 控制台键 (Ctrl+C) 组合解释为...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India