C# 中的默认构造函数及其调用

发布日期:2026-07-14 02:02:03   来源 : 杭州电子商务研究院    浏览量 :9
杭州电子商务研究院 发布日期:2026-07-14 02:02:03  
9

介绍

万事皆有始。在 C# 中创建类或结构时,会调用其构造函数。构造函数的典型调用是使用new关键字。构造函数允许根据构造函数所采用的参数使用默认或自定义属性初始化实例。构造函数的名称与构造实例的类相同。

构造函数

让我们举一个简单的例子来说明构造函数。我们将定义一个具有两个不同构造函数的类,这称为重载。

      using System;
namespace Pluralsight
{
    public class DefaultConstructors
    {
        bool isInitialized;
        private int a;
        private int b;
        public DefaultConstructors()
        {
            Console.WriteLine("Constructor without argument.");
            isInitialized = true;
        }
        public DefaultConstructors(int aa, int bb)
        {
            
            this.a = aa;
            this.b = bb;
            Console.WriteLine($"Constructor with two arguments: int {aa}, and int {bb}");
        }
                       
        public static void Main()
        {

            DefaultConstructors a = new DefaultConstructors();
            Console.WriteLine($"The instance of {nameof(DefaultConstructors)} is initialized: {a.isInitialized}");
            DefaultConstructors b = new DefaultConstructors(10,20);
            Console.WriteLine($"The instance of {nameof(DefaultConstructors)} is initialized with arguments {b.a}, and {b.b}");
            Console.ReadKey();
        }

    }
}
    

执行的输出给了我们以下结果。

      Constructor without argument.
The instance of DefaultConstructors is initialized: True
Constructor with two arguments: int 10, and int 20
The instance of DefaultConstructors is initialized with arguments 10, and 20
    

如果我们不想根据参数对类进行任何修改,我们可以完全省略构造函数,因为它将在编译时由 C# 动态生成。

该代码也有效。

      using System;
namespace Pluralsight
{
    public class DefaultConstructors
    {
       
        public static void Main()
        {

            DefaultConstructors a = new DefaultConstructors();
            Console.WriteLine($"The instance of {nameof(DefaultConstructors)} is initialized!");

            Console.ReadKey();
        }

    }
}
    

这将产生以下输出。

      The instance of DefaultConstructors is initialized!
    

关于默认构造函数的另一个非常重要的特性是,它们将每个数字字段初始化为0,将每个字符串或对象字段初始化为null

让我们通过下一个例子来证明这一点。

      using System;
namespace Pluralsight
{
    public class DefaultConstructors
    {
        int a;        
        string b;        
        object c;
        
        public static void Main()
        {

            DefaultConstructors a = new DefaultConstructors();
            Console.WriteLine($"The instance of {nameof(DefaultConstructors)} is initialized!");
            Console.WriteLine($"The value of a: {a.a}");
            Console.WriteLine($"The value of b: {object.Equals(a.b,null)}");
            Console.WriteLine($"The value of c: {object.Equals(a.c,null)}");
            Console.ReadKey();
        }
    }
}
    

object.Equals ()函数帮助我们检查特定对象或实例的值是否为空。执行应用程序后,我们将看到以下输出。

      The instance of DefaultConstructors is initialized!
The value of a: 0
The value of b: True
The value of c: True
    

使用默认构造函数的缺点是您无法选择以不同的方式初始化实例。

您可以使用两种类型的构造函数:私有公共。作为一般经验法则,请记住私有构造函数仅用于仅包含静态成员的类。如果类只存在私有构造函数,则除嵌套类外,其他类无法创建它的新实例。

结论

在本指南中,我们了解了构造函数最重要的方面,查看了如何通过构造函数强制类执行不同行为的示例,并演示了它如何帮助我们使用默认值初始化实例字段或属性。这背后的想法是让您作为程序员在构建应用程序时避免犯常见错误。我希望本指南对您有所帮助,并感谢您阅读它。

以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据