LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C#中三种构造函数的详细指南和优化方法

admin
2023年9月25日 12:20 本文热度 510

在C#中,构造函数是一种特殊的方法,用于初始化新创建的对象。当您使用关键字“new”创建一个新对象时,构造函数将被自动调用。

构造函数的名称必须与类名相同,并且它没有返回类型。构造函数的执行顺序是在对象创建时进行的,它用于初始化对象的状态。C#中的构造函数有三种:

第一种:实例构造函数(Instance Constructor)

当使用new关键字创建类的对象时,可以使用实例构造函数来初始化和创建类中的任意成员属性。下面演示一个名为Man的类,以及类中的实例构造函数:

public class Man{

    public string Name { get; set; }

    public int Age { get; set; }

    public Man(stirng name,int age){

        Name =name;

        Age =age;

    }

}

只要创建Man的对象,就会调用类中的实例构造函数,在实例化对象时将具体的值传递给类中的构造函数即可,如下代码:

Man m=new Man("小沈子",25);

第二种:静态构造函数(Static Constructor)

静态构造函数用于初始化类中的静态数据或执行仅需一次的特定操作,静态构造函数将在创建第一个实例或引用类中的静态成员之前自动调用。

静态构造函数具有以下特点

.静态构造函数不使用访问权限修饰符修饰或不具有参数;

.类或结构体中只能具有一个静态构造函数;

.静态构造函数不能继承或重载;

.静态构造函数不能直接调用,仅可以由公共语言运行时调用;

.用户无法控制程序中静态构造函数的执行时间;

在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数以初始类化;

.静态构造函数会在实力构造函数之前运行;

实例如下:

public class MyClass{

    public static int num = 0;

    // 实例构造函数

    public Example()

    {

        num=1;

        Console.WriteLine("实例构造函数被调用。"+num);

    }

    // 静态构造函数

    static Example()

    {

        num=2;

        Console.WriteLine("静态构造函数被调用。"+num);

    }

    public static void CallStaticConstructor()

    {

        Console.WriteLine("调用静态构造函数。");

    }

    public static void Main()

    {

        // 静态构造函数被自动调用

        Console.WriteLine("当程序开始运行时,静态构造函数会被自动调用。");

        // 调用静态构造函数

        Example.CallStaticConstructor();

        // 创建类的实例,调用实例构造函数

        Example example = new Example();

    }

}

在这个示例中,静态构造函数被自动调用一次,当程序开始运行时。当你调用CallStaticConstructor方法时,它不会再次调用静态构造函数。另外,每次你创建一个类的实例时,实例构造函数都会被调用。

第三种:受保护构造函数(Protected Constructor)

受保护构造函数允许子类访问它,但不能从类的外部访问。如果你希望一个类有多个层次结构的实例,但不想从类的外部直接访问这些实例,那么就可以使用受保护构造函数。下面通过一个实例来展示私有构造函数的使用:

public class BaseClass{    // 受保护构造函数    protected BaseClass(string message)    {        Console.WriteLine("BaseClass构造函数被调用,消息是:" + message);    }}
public class DerivedClass : BaseClass{    // 公共构造函数    public DerivedClass() : base("从派生类调用")    {        Console.WriteLine("DerivedClass构造函数被调用");    }}
public class Program{    public static void Main()    {        DerivedClass derived = new DerivedClass(); // 创建DerivedClass实例    }}

在上面的代码中,BaseClass有一个受保护构造函数,它接受一个字符串参数。DerivedClass继承自BaseClass,并且在其公共构造函数中使用受保护构造函数来调用BaseClass的构造函数,同时还输出了一个消息。在Main方法中,我们创建了一个DerivedClass的实例。在这种情况下,将首先调用DerivedClass的构造函数,然后在其中调用BaseClass的受保护构造函数。

从上面的示例中可以看出,构造函数还可以分为:默认构造函数(无参构造函数)、带有参数的构造函数和重载构造函数三种。

下面是对这三种构造函数的详细指南和优化方法:

1、默认构造函数(无参构造函数):

    1. 指南:当创建类时,如果没有定义任何构造函数,编译器会自动为这个类生成一个默认的无参构造函数。这个构造函数不接受任何参数,它的作用是初始化类的所有成员变量。

    2. 优化方法:如果你需要为类的成员变量设置初始值,可以在无参构造函数中实现。例如:

    public class MyClass {

        public int MyVariable { get; set; }

        public MyClass()

        {

            MyVariable = 0// 设置初始值

        }

    }


2、带有参数的构造函数

    1. 指南:当创建类时,如果定义了带有参数的构造函数,编译器就不会自动生成无参构造函数。你必须显式地定义带有参数的构造函数来初始化类的成员变量。

    2. 优化方法:在定义带有参数的构造函数时,需要考虑以下几点:

      1. 参数的数量和类型:根据类的需要,确定需要多少个参数以及每个参数的类型。

      2. 默认值:可以为参数设置默认值,这样在调用构造函数时如果没有提供这些参数的值,它们就会使用默认值。例如:

      public class MyClass {

          public int MyVariable { get; set; }

          public MyClass(int myVariable = 0)

          {

              MyVariable = myVariable;  // 使用参数值初始化成员变量

          }

      }


3、重载构造函数

    1. 指南:当需要在同一个类中定义多个构造函数时,可以使用重载构造函数。每个重载构造函数可以有不同的参数列表,以实现不同的初始化逻辑。

    2. 优化方法:在定义重载构造函数时,需要考虑以下几点:

      1. 减少重复代码:每个重载构造函数应该只包含一次重复的代码部分。其他不重复的代码部分应该放在一个共同的私有构造函数中,并由所有重载构造函数调用。

      2. 传递参数:如果一个重载构造函数没有参数,但其他重载构造函数有参数,那么没有参数的重载构造函数应该调用具有最少参数的重载构造函数。例如:

      public class MyClass {

      public int MyVariable { get; set; }

       

          public MyClass() : this(0)

      {  }  // 无参构造函数调用有参构造函数

       

          public MyClass(int myVariable)

          {

              MyVariable = myVariable;  // 使用参数值初始化成员变量

          }

      }


该文章在 2023/9/25 12:20:05 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved