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做為區別,
非必要的情況下,就看個人、看團隊風格了。

arrow
arrow

    Vincent 發表在 痞客邦 留言(0) 人氣()