构造函数分为实例构造函数、私有构造函数和静态构造函数
注意:静态类中无法创建构造函数
实例构造函数
(1)它主要用于为对象分配存储空间,对数据成员进行初始化.
(2)类默认自带构造函数 如果需要扩展内容 也可以重新定义构造函数(
public MyClass() {
Console.WriteLine("MyClass构造函数调用了1");
}
public MyClass() {
Console.WriteLine("MyClass构造函数调用了2");
}
)
(3)实例构造构造函数的名字必须与类同名
public class MyClass1
{
private MyClass1() {
}
}
(4)实例构造函数没有返回类型,它可以带参数,也可以不带参数
public MyClass(int age) {
_age = age;
Console.WriteLine("MyClass构造函数调用了2");
}
(5)实例构造方法的访问修饰符通常是public类型的,这样在其他类中都可以创建该类的对象
(6)构造方法是在创建类的对象时被调用的。通常会将一些对类中成员初始化的操作放到构造函数中去完成
MyClass(构造函数).Age(属性) = 18;
不用调用 控制台会输出 18
(7)构造函数可以重载,从而提供初始化类对象的不同方法()
私有构造函数
私有构造函数可用于阻止外部创建类的实例
如果内部调回构造函数 还是可以创建对象
如果想要一个类 真正的没有对象创建 使用静态类
public class MyClass1
{
private static int _age;
private static string _name;
private MyClass1() {
_age = 10;
_name = "张三";
}
public static MyClass1 Create()
{
MyClass1 myClass1 = new MyClass1();
return myClass1;
}
}
静态构造函数
1、静态构造函数既没有访问修饰符,也没有参数。
2.创建第一个类实例或任何静态成员被引用时,自动调用静态构造函数来初始化类
3.一个类只能有一个静态构造函数。 如果没定义 系统默认有 反之只能定义无参静态构造函数
public MyClass3()(可以只有无参数 的函数)
{
Console.WriteLine("MyClass3无参实例构造函数");
}
public MyClass3(int a)(不能只有有参数 的函数)
{
Console.WriteLine("MyClass3有参实例构造函数");
}
4.无参数的实例构造函数可以与静态构造函数共存。尽管参数列表相同,但一个属于类,
一个属于实例,所以不会冲突
5.在类创建时 系统自动调用一次静态构造函数
析构函数
1.垃圾回收程序最终销毁对象之前调用的方法,该方法称为析构函数
2.析构函数,没有返回值,且不带任何参数。
3.在对象删除前,用它来做一些清理工作 比如 一些和类相关的数据
强制开启回收 立即回收内存 调用析构函数(自带功能)
GC.Collect();