[C#, CSharp] this和base
this
- 子類別繼承父類別後,當存取同名的成員時,可以使用base和this來區分是存取父類別或子類別的成員
- this:代表目前類別,可以用來識別類別成員或區域變數
- 使用this代表實體成員
class 類別 { string 資料 = "World"; public void 方法(string 資料) //假設 資料="Hello" { System.Console.WriteLine( 資料 ); //顯示:Hello System.Console.WriteLine( this.資料 ); //顯示:World } }
- 錯誤寫法:
class 類別 { public 類別() { System.Console.WriteLine( "A" ); } public 類別(string 參數) : { this( ); // X 不能在敘述中使用this()當作無引數的建構函式 類別( ); // X 不能直接呼叫建構函式 } }
base
- base:代表父類別,可以用來識別父類別成員或子類別成員
-
class 父類別 { virtual void 方法( ) { System.Console.WriteLine("父類別方法"); } } class 子類別 : 父類別 { public override void 方法( ){ System.Console.WriteLine("子類別方法"); } public void 方法A( ) { base.方法( ); //顯示:父類別方法 方法( ); //顯示:子類別方法 this.方法( ); //顯示:子類別方法 } }
-
- 代表父類別的建構函式
-
class 父類別 { public 父類別() { System.Console.Write(" 父類別"); } } class 子類別 : 父類別 { public 子類別() : base() { System.Console.Write("子類別"); //顯示:父類別 子類別 } }
-
- 代表父類別的建構函式,並帶參數
-
class 父類別 { public 父類別() { System.Console.Write(" 父類別A"); } public 父類別(string 參數) { System.Console.Write(" 父類別B"); } } class 子類別 : 父類別 { public 子類別(string 參數) : base(參數) { System.Console.Write("子類別"); //顯示:子類別 父類別B } }
-