构造函数的用法学习笔记:
l 公共(public)构造函数
C#实例形式:
Class MyClass()
{
Public MyClass(){}
}
l 私有(private)构造函数
如果一个类有一个或多个私有构造函数而没有公共构造函数,则不允许其他类创建该类的实例。一般情况下类默认有一个公共的构造函数,如果希望类不能被其他类实例化,可以声明空构造函数来阻止自动生产默认构造函数。私有构造函数一般应用于单件模式(Singleton)中。
Class MyClass
{
Private MyClass(){}
Private MyClass _objMyClass;
Public MyClass Instance()
{
If(_objMyClass ==null){_objMyClass = new MyClass()}
Return _objMyClass;
}
}
l 保护(protected)构造函数
受保护的构造函数使类可以被子类实例化。而其他非子类的类不可以创建该类的实例。
ATest 为Test的子类。Test类无法使用Test objNews = New Test() 来实例化(无法通过编译)
<o:p> </o:p>
public class MyClass<o:p></o:p>
{<o:p></o:p>
public static void <st1:place w:st="on">Main</st1:place>()<o:p></o:p>
{<o:p></o:p>
ATest obj = new ATest();<o:p></o:p>
RL();<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
public class Test<o:p></o:p>
{<o:p></o:p>
protected Test()<o:p></o:p>
{<o:p></o:p>
MyClass.WL("This is protected");<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
<o:p> </o:p>
public class ATest:Test<o:p></o:p>
{<o:p></o:p>
public ATest()<o:p></o:p>
{<o:p></o:p>
MyClass.WL("This is ATest");<o:p></o:p>
}<o:p></o:p>
}
l 静态(static)构造函数:
静态构造函数用来初始化类。在创建第1个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。静态构造函数即没有访问修饰符,也没有参数。
<o:p> </o:p>
using System;<o:p></o:p>
using System.Collections;<o:p></o:p>
<o:p> </o:p>
public class MyClass<o:p></o:p>
{<o:p></o:p>
<o:p></o:p>
public MyClass()<o:p></o:p>
{<o:p></o:p>
System.Console.WriteLine("New Instance Created");<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
static MyClass()<o:p></o:p>
{<o:p></o:p>
System.Console.WriteLine("Static Instance Created");<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
public static void Hello()<o:p></o:p>
{<o:p></o:p>
WL("Hellow");<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
public static void <st1:place w:st="on">Main</st1:place>()<o:p></o:p>
{<o:p></o:p>
MyClass.Hello();<o:p></o:p>
MyClass ms = new MyClass();<o:p></o:p>
RL();<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
<o:p></o:p>
}