可選的構造函數參數
構造函數的this(...) 形式通常用於與實現可選的構造函數參數的關聯上。在這個例子中
class Text
{
public Text(): this(0, 0, null) {}
public Text(int x, int y): this(x, y, null) {}
public Text(int x, int y, string s) {
// Actual constructor implementation
}
}
前兩個構造函數只是為丟失的參數提供了默認的數值。兩個都使用了一個this(...)構造函數的初始化函數來調用第三個構造函數,它實際上做了對新實例進行初始化的工作。效果是那些可選的構造函數參數:
Text t1 = new Text(); // Same as Text(0, 0, null)
Text t2 = new Text(5, 10); // Same as Text(5, 10, null)
Text t3 = new Text(5, 20, "Hello");
析構函數
析構函數是一個實現破壞一個類的實例的行為的成員。析構函數使用析構函數聲明來聲明:
一個析構函數聲明的標識符必須為聲明析構函數的類命名,如果指定了任何其他名稱,就會發生一個錯誤。
析構函數聲明的主體指定了為了對類的新實例進行初始化而執行的語句。這於一個有void返回類型的實例方法的主體相關。
例子
class Test
{
static void Main() {
A.F();
B.F();
}
}
class A
{
static A() {
Console.WriteLine("Init A");
}
public static void F() {
Console.WriteLine("A.F");
}
}
class B
{
static B() {
Console.WriteLine("Init B");
}
public static void F() {
Console.WriteLine("B.F");
}
}
會產生或者是下面的輸出:
Init A
A.F
Init B
B.F
或者是下面的輸出:
Init B
Init A
A.F
B.F