close
在C#的類別(Class)時,為了外觀統一,大多的函式參數會與類別屬性名稱相同,尤其在建構子(Constructor)最為常見,此時,我們要如何去分辨哪些是參數哪些是屬性呢?
Class Test{
int buffer = 0; //buffer為類別屬性
public Test(int buffer){ //buffer為函式參數
buffer //這裡到底是什麼?
}
}
目前使用(Visual Studio)編譯器的預設是呼叫「建構參數」
但是為了達到存取目的,以及正確的呼叫,這其中還是需要一點分別的。
而這分別的方式就是「this」這個關鍵字
this.buffer //呼叫類別屬性
buffer //呼叫函式參數
會用到this通常是屬性與函式參數名稱相同的時候加以區別,
但嚴格來說,呼叫屬性的時候最好通通加上this,
一方面是視覺區別,二方面是未來修改的時候比較不容易出錯。
畢竟一個函式可能有類別屬性、函式參數、區域變數同時存在,
良好的區分及控管對未來是很有幫助的。
Class Test{
int buffer = 0; //buffer為類別屬性
public Test(int buffer){ //buffer為函式參數
buffer = 5; //參數buffer = 5
this.buffer = 3; //屬性buffer = 3
}
}
這時呼叫Test.buffer就會是3了
如果早期有學過VB、C++等,對於this絕對不陌生,甚至有些語言的類別屬性強制要使用this,
而今在C#中已經省去很多,在沒有名稱重複的地方不用this也沒有關係。
至於現在手邊的專案要不要嚴格的加上this做為區別,
非必要的情況下,就看個人、看團隊風格了。
文章標籤
全站熱搜