C#中三种构造函数的详细指南和优化方法
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
在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) 受保护构造函数允许子类访问它,但不能从类的外部访问。如果你希望一个类有多个层次结构的实例,但不想从类的外部直接访问这些实例,那么就可以使用受保护构造函数。下面通过一个实例来展示私有构造函数的使用:
在上面的代码中,BaseClass有一个受保护构造函数,它接受一个字符串参数。DerivedClass继承自BaseClass,并且在其公共构造函数中使用受保护构造函数来调用BaseClass的构造函数,同时还输出了一个消息。在Main方法中,我们创建了一个DerivedClass的实例。在这种情况下,将首先调用DerivedClass的构造函数,然后在其中调用BaseClass的受保护构造函数。 从上面的示例中可以看出,构造函数还可以分为:默认构造函数(无参构造函数)、带有参数的构造函数和重载构造函数三种。 下面是对这三种构造函数的详细指南和优化方法: 1、默认构造函数(无参构造函数):
public class MyClass { public int MyVariable { get; set; } public MyClass() { MyVariable = 0; // 设置初始值 } } 2、带有参数的构造函数:
public class MyClass { public int MyVariable { get; set; } public MyClass(int myVariable = 0) { MyVariable = myVariable; // 使用参数值初始化成员变量 } } 3、重载构造函数:
public class MyClass { public int MyVariable { get; set; }
public MyClass() : this(0) { } // 无参构造函数调用有参构造函数
public MyClass(int myVariable) { MyVariable = myVariable; // 使用参数值初始化成员变量 } } 该文章在 2023/9/25 12:20:05 编辑过 |
关键字查询
相关文章
正在查询... |