一般情況下,一個類中往往包含欄位,屬性和方法。其中,屬性是對欄位的封裝,以便於增加訪問限制以及某些特別的邏輯。比如當欄位被賦值的時候執行一段邏輯代碼等等。經常用來做賦值驗證。欄位的賦值也可以通過構造函數的參數來傳遞。當對象建立的時候就可以初始化欄位。一種簡便的初始化欄位的方法是對象初始化器,例如:A ...
一般情況下,一個類中往往包含欄位,屬性和方法。其中,屬性是對欄位的封裝,以便於增加訪問限制以及某些特別的邏輯。比如當欄位被賦值的時候執行一段邏輯代碼等等。經常用來做賦值驗證。欄位的賦值也可以通過構造函數的參數來傳遞。當對象建立的時候就可以初始化欄位。一種簡便的初始化欄位的方法是對象初始化器,例如:A obj = new A{Value1=100,Value2=200};這樣寫可以自定義初始化任意欄位,也防止寫很多重載的構造函數。
說完了欄位於屬性,我們說說方法。方法有很多類型,靜態的,實例的,有參的,無參的,有返回值的和我返回值的。同一個類中,可以有多個方法同名,也就是重載方法。不過這些同名的方法的參數要不同。要麼參數個數不同,要麼參數類型不同,要麼參數順序不同。不過與方法的返回值無關。說到參數返回值,我們有時候需要方法返回多個返回值。那麼我們可以使用out關鍵字。out關鍵字用在參數前,類似於C語言中的&,就是一個地址參數,表示要修改的變數的地址。等到函數執行完,這個參數變數也就被修改了,相當於返回值。另外,也可以用ref關鍵字,與out不同的是值傳進來之前要初始化,否則會報錯。當然,如果要返回的值很多,還是用類或者struct比較方便。.net4.0增加了個類叫Tuple,他代表一個有序的N元組。例如:Tuple<int,int>表示含有int類型值得二元組。使用的時候可以這樣寫:Tuple<int,int> tu = new Tuple<int,int>(1,2);那麼,這個二元組裡就放入了1和2.訪問這個二元組時可以這樣寫:int item1 = tu.Item1; int item2 = tu.Item2; 這樣,兩個值就取出來了。同時,Tuple可以嵌套,這有點象數組。
.net3.0引入了擴展方法,這個東西很好用。在不改變原有類的情況下,為類添加新的方法擴展。值得註意的是擴展方法必須是static的,所以他必需放在static的類中。寫法是這樣的:public void ExtendedMethod(this OriginalClass oc, int p1, string p2)。其中this關鍵字必須寫。OriginalClass代表你要擴展的類。ASP.NET MVC 中的HtmlHeper有很多方法都是擴展而來,擴展自System.web.mvc.html下的InputExtensions類。這方面問題可以參考Asp.net mvc 開發基礎學習筆記。建立自己的擴展類的時候,不要與原來的類重名,不然永遠也不會調用到你的擴展方法。
C#中的欄位,屬性和方法先寫到這裡,以後有時間會補充。如有任何錯誤請指正。