我有興趣知道C#
中的this
和base
對象之間的區別。使用它們時的最佳做法是什麼?此和基地之間的區別
9
A
回答
24
0
this
指的是當前正在使用的任何對象。一般而言,Base
是指基類。
如果對象是base
那麼在這種情況下this
也可以參考base
對象。
0
this
引用當前類實例。
base
引用當前實例的基類,即它從中派生的類。如果當前班級沒有明確從任何派生base
將參考System.Object
類(我認爲)。
7
這兩個關鍵字是非常不同的。
this
指當前實例(不是「當前級」)。它只能用於非靜態方法(因爲在靜態方法中沒有當前實例)。調用this
上的方法將以與在包含相同實例的變量上調用該方法時相同的方式調用該方法。base
是一個關鍵字,允許繼承方法調用,即即它從基類型調用指定的方法。它也只能用於非靜態方法。它通常用於虛擬方法覆蓋,但實際上可用於調用基本類型中的任何方法。它與常規方法調用非常不同,因爲它繞開了正常的虛方法調度:即使它是虛擬的,它也直接調用基方法。
6
達林是對的。一個例子也可能有所幫助。 (有沒有一個例子,當我最初公佈。現在有。)
class Base {
protected virtual void SayHi() {
Console.WriteLine("Base says hi!");
}
}
class Derived : Base {
protected override void SayHi() {
Console.WriteLine("Derived says hi!");
}
public void DoIt() {
base.SayHi();
this.SayHi();
}
}
上面打印「基地說:嗨!」其次是「派生說你好!」
0
可以說你有一個這樣
class B extends A {
public B() {
// this will refer to the current object of class B
// base will refer to class A
}
}
代碼說明:代碼的語法是Java編寫,但它是自我解釋。
0
基 - 用於將派生類
此內從訪問基類的成員 - 指類的當前實例,並繼承
class BaseClass
{
public string BaseAttr { get; set; }
}
class A : BaseClass
{
public string Attr { get; set; }
public void Method()
{
this.Attr = "ok";
this.BaseAttr = "base ok";
base.BaseAttr = "ok";
base.Attr = "unavailable"; //!
}
}
1
「this
」關鍵字指向當前對象的地址。我們可以使用「this
」關鍵字來表示當前對象(當前類)。
凡爲「base
」關鍵字代表了「父類」
所以,如果你想使用/父類的通話功能,您可以使用「base
」關鍵字。
base
在函數覆蓋父類的調用函數中非常有用。
相關問題
- 1. 基數「*」和「0 .. *」之間的區別 - UML
- 2. 地圖和ImmutableMap之間的區別
- 3. 地圖和字典之間的區別
- 4. 地標和註釋之間的區別
- 5. (本地),'。'之間有區別嗎?和localhost?
- 6. 之間的〜/和的區別../
- 7. '#','%'和'$'之間的區別
- 8. {!!之間的區別!!}和{{}}
- 9. '+ ='和'= +'之間的區別?
- 10. 「。+」和「。+?」之間的區別
- 11. .eq之間的區別。和==
- 12. #。/和#之間的區別。 ./
- 13. !=和!之間的區別==
- 14. 「%〜dp0」和「。\」之間的區別?
- 15. | =和^ = css之間的區別
- 16. 之間的區別。和#
- 17. ==和case之間的區別?
- 18. 「**/* /」和「** /」之間的區別?
- 19. jQuery - '。'之間的區別和「#」
- 20. 「?1」和「?」之間的區別
- 21. `%in%`和`==`之間的區別
- 22. fmod和%之間的區別
- 23. 之間的區別:+和:+
- 24. 此WHERE子句和此加入之間有什麼區別?
- 25. 基於像素和基於幀的方法之間的區別
- 26. mysql基本版和社區版本之間的區別
- 27. 基本,基本和同形矩陣之間的區別
- 28. 兩個表之間的基本區別
- 29. 類區域和堆之間的區別
- 30. SPFile和PublishingPage類別之間的區別
嚴格地說,這是指當前的類實例,而不是當前的類類型。 – 2010-09-17 07:00:58
@阿德里安,是的好點。更新我的帖子以考慮到。 – 2010-09-17 07:07:07