忙了一段時間,終于清閑一點。花一點時間來寫寫部落格也是件挺開心的事。我們來繼續我們的C#基礎課程講解,今天我們要了解的是類的構造函數和析構函數
構造函數
構造函數是在類執行個體化時執行的方法,它沒有傳回值,而且名稱與類名相同。構造函數在執行的時候會初始化類中的字段,為其賦為預設值(預設值大家可以在MSDN上進行檢視)
如果類中沒有顯式聲明構造函數,.net Framework會預設為我們建立一個該類的構造函數,他的作用就是初始華麗些資源,引用類型預設為null構造函數大緻可以分為三種類型:
1.執行個體化構造函數
有參的構造函數定義後,預設的構造函數就沒有了。執行個體化構造函數是用來執行個體化對象的
class zzqupy
{
int age;
public zzqupy()
{//無參構造函數
Console.WriteLine("在被執行個體化的時候執行");
}
public zzqupy(int age)
{//有參構造函數
this.age = age;
}
}
2.靜态構造函數
不允許有通路修飾符,通路類之前,靜态構造函數首先被調用,而且隻會補調用一次。靜态構造函數是不允許有參數的。每個類隻能有一個靜态構造函數。給靜态字段初始化,會預設生成一個靜态構造函數,該靜态構造函數将字段的初始化放在靜态構造函數内部進行。這就說明,所有的靜态字段的初始化都是在靜态構造函數中完成的
class zzqupy
{
static int i;
static zzqupy()
{//靜态構造函數,用來初始化靜态字段
i = 10;
}
}
3.私有構造函數
不允許在類外部進行執行個體化。這涉及到設計模式上的課程了,我們在以後會進行講解。這裡不再過多讨論
析構函數
一個類隻有一個析構函數
無法繼承和重載析構函數
無法調用析構函數 (自動被調用 )
析構函數沒有修飾符,也沒有參數
class Program
{
static void Main(string[] args)
{
zzqupy zz = new zzqupy();
}
}
class zzqupy
{
~zzqupy()
{
Console.WriteLine("我被析構了");
}
}
運作結果中,我們會發現當CLR發現類的執行個體不會被使用的時候就會調用類的析構函數
本篇相對來說是很容易了解的,本系列也是針對C#基礎來說的。是以沒有細說,見諒
轉載請注名:小曲 @ CSDN