說起c#就不能不提.net,可是你知道,二者並沒有根本上的聯絡(有些過,但可以明確的是c#不是.NET的一部分)-----雖然c#是專門為.NET而設計的……然而,當二者配合使用的時候,就會有這樣的效果:有一些特性是語言特性,c#語言支援的,有一些特性是平台特性,.NET支援的,所以,想使用c#高效的開發,部署,理解framework是必要的。
第一章是.NET體繫結構的總體概述,很多地方還不能理解的透徹,估計沒什麼大礙,在以後慢慢琢磨,可以預見的是,幾乎每向下進行一布,就要回頭看看第一章那個的相關內容,予以總過……
因為有過一些cpp,java 的編程經曆,看到cs的代碼覺得陌生,很多東西是一樣的……但是有一些方面值得注意
1,相異實值型別和參考型別
二者的儲存方式不同,前者是儲存在棧中,後者是儲存在託管堆中,而且是一個原值的引用。對於預定義的資料類型來講:除了string,object之外都是實值型別,而他們是參考型別。
但是有一點值得注意:作為ref的string:
view plaincopy to clipboardprint?string s1 = "Hello World"; string s2= s1 ; s1 = "Something else"; string s1 = "Hello World";
string s2= s1 ;
s1 = "Something else";
此時的輸出結果:s1 = something else ; s2 = Hello World
因為在修改一個字串的時候,會建立一個全新的string,這其中的實現機制,我覺得應該是string的封裝類的符號重載“=”
哦對了,c#對於資料的初始化非常嚴格……
object類,最終父類,其強大的作用,知道一點java的都懂的……
2,關於注釋
平時不太關注的,這裡因為有一個XML文檔說明,覺得這樣的一個解決方式非常的聰明,後面的思想很值得借鑒,codes are just codes,根據我們解析法那個是的不同,便會有不同……
3,編程約定
私用有成員使用camel形式,公有與保護使用Pascal形式
4,類成員
資料成員:欄位,常量,事件。這裡,事件是我現在還不能理解的,但是大體的意思的“客戶可以包含所謂的事件處理常式的代碼來響應該事件”-------這是不是和SQL中的trigger有一個作用,如果是那樣的就好理解了……待驗證。
函數成員:
方法,無需解釋
屬性,沒有VB經驗的表示屬性是一個多餘的東西,我可以把它理解為一個對於訪問器與設定器偷工減料的書寫方式麼?我一開始以為可能這樣使用屬性的話,可以把其自動列為內嵌函式,但是我錯了,.net的內聯機制的自動的(大多數情況下?),好了,既然如此,當我更熟悉CPP/JAVA的時候,我沒有理由不放棄她……
還有關於out的使用,這對與有目的性的實值型別做輸出變數是有意義的,我估計其實現機制是強制的轉化ref型……而後面的重載規則中:兩方法不能根據參數的ref和out 來區分 ---這也支援我的推斷
建構函式:因為嚴格的初始化控制,在沒有自訂constructor的時候,會有一個預設的,無參數constructor,把實值型別設為0,參考型別設為null,這其中的實現機制我感覺是,最終父類object繼承造成的。一個很不錯的東西。
關於初始化列表,cs中,確實用類似的使用,但是,只允許對其他建構函式的調用,……(那麼,封裝類呢?)
靜態建構函式,對欄位中static進行初始化,但是我們不知道什麼時候會初始化,只是告訴你會在這個類使用之前,.net中有很多不確定性,這樣的話,如果考試就沒得出題了?……
終結器:自動的析構
operator:
索引器:還不懂,&
5,關於readonly欄位
我覺得如果用一句說的話,應該是:可以在建構函式中給他賦值,之後的行為與const一直……
6,擴充方法:
是一個非常非常非常有用的東西,雖然以前沒有用過,但是,這個一定非常非常非常有用:
view plaincopy to clipboardprint?
public static class Extension
{
public static void AddMethod(this Money monney, int number)
{
money.number += number;
}
}
public static class Extension
{
public static void AddMethod(this Money monney, int number)
{
money.number += number;
}
}
書寫的時候,注意是靜態,但是調用的時候,執行個體方式調用,擴充方法不會覆蓋同名方法。
第一篇over
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/chrisplus_jiang/archive/2010/07/14/5734181.aspx