類構造函數
本節將討論三種類構造函數
類構造函數的類型
注釋
實例
用於創建並初始化類的實例
私有
在類之外不可訪問的特殊類型實例構造函數
靜態
在創建第一個實例或引用任何靜態成員之前
備注
(
創建新對象時將調用類構造函數
Point myPoint = new Point();
一個類可以有多個構造函數
如果類沒有構造函數
類構造函數可通過base關鍵字來調用基類的構造函數
public Cylinder(double radius
{
}
類構造函數也可通過關鍵字 this 調用同一個類的另一個構造函數
public Point(): this(
{
}
在前面的示例中
(
私有構造函數是一種特殊的實例構造函數
class NLog
{
// Private Constructor:
private NLog() {}
public static double e =
}
聲明空構造函數可阻止自動生成默認構造函數
(
靜態構造函數用於初始化類
靜態構造函數既沒有訪問修飾符
在創建第一個實例或引用任何靜態成員之前(方法或字段)
無法直接調用靜態構造函數
在程序中
靜態構造函數的典型用途是
結構構造函數
結構構造函數類似於類構造函數
n 結構不能包含顯式的無參數構造函數
n 結構不能有以下形式的初始值設定項
結構可以聲明構造函數
對於結構
析構函數
析構函數用於銷毀類的實例
備注
不能對結構使用析構函數
一個類只能有一個析構函數
無法繼承或重載析構函數
無法調用析構函數
析構函數既沒有修飾符
~ MyClass()
{
// Cleanup statements
}
該析構函數隱式地對對象的基類調用 Object
protected override void Finalize()
{
try
{
// Cleanup statements
}
finally
{
base
}
}
這意味著對繼承鏈中的所有實例遞歸地(從派生相近程度最大的到派生相近程度最小的)調用 Finalize 方法
程序員無法控制何時調用析構函數
base關鍵字
base 關鍵字用於從派生類中訪問基類的成員
調用基類上已被其他方法重寫或隱藏的方法
指定創建派生類實例時應調用的基類構造函數
基類訪問只能在構造函數
靜態方法中使用 base 關鍵字是錯誤的
This 關鍵字
this 關鍵字表示類的當前實例
靜態成員沒有 this 指針
訪問被相同的名稱隱藏的成員
如
public Employee(string name
{
this
this
}
將this作為參數傳遞到其他方法
如
CalcTax(this);
聲明索引器
public int this [int param]
{
get
{
return array[param];
}
set
{
array[param] = value;
}
}
調用同類中其它的構造函數
靜態方法
From:http://tw.wingwit.com/Article/program/net/201311/12990.html