Visual C#之核心语言
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Visual C#之核心语言
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            	期末階段到來了,一方面要準備著專業課的考試,一方面計算機的進度也不能停下來。在寒假到來之前,機房重構是不打算開始了,到時候做著做著又得停下來,感覺不太好。所以,趁這段時間,找了基本C#、.NET的書看看,把一些基礎的東西再鞏固鞏固。
	這一篇主題為“C#之核心語言”。一共包含三編的內容,分別為C#編程介紹、類型和繼承。
	在這本書中,知識點結構不是很清晰,但是知識點講解得很詳細,對我們來說,還是比較容易理解的。
 第一編 C#編程介紹  這里主要介紹一個命名空間的概念。  【命名空間】用來組織和重用代碼的編譯單元。之所以出來這樣一個東西,是因為人類可用的單詞數太少,并且不同的人寫的程序不可能所有的變量都沒有重名現象。為了解決這個問題,引入了名字空間這個概念,通過使用 namespace xxx。  我覺得就好比儲藏室,其中包含各類東西,而需要什么,就從中去找。有時候可能會因為東西一樣而拿錯,所以就在每個儲藏室都編個名,這樣就不會混淆,而是到特定的一個儲藏室中去取。 第二編 類型  首先明確這里的類型主要包括哪些東西。            	在上面的圖中,可能第三級分支大家都很熟悉,而對于第二級分支就感覺陌生不少。以前也沒有這樣歸類過,比如說類、接口這些都沒有想過它們其實都是屬于引用類型(由類型的實際值引用(類似于指針)表示的數據類型),而數據類型、結構則是屬于值類型(一種由類型的實際值表示的數據類型)。大體清楚后,就是細枝末節部分的總結。下面的導圖就是主要知識點。        	其實這部分內容之前也是頻頻接觸,但始終沒有專門總結,有疑惑的地方也只是掛著。這一次的學習,加上書上代碼的演示,有些東西清楚了不少。比如說成員的可訪問性,自己的世界里好像只有public和private。
 第三編 繼承  一些類通常會和其它類相關,用于對類進行關聯的兩種做法是容器和繼承。容器表達的是一種“有一個”關系,一個類包含或嵌入另一個類。繼承是基于“是一個”關系,一個類是另一個類的一種類型。  繼承涉及到一個基類型和派生類型,其保證了層次結構的清晰性,也促進了代碼的重用。  引用類型可以繼承類和接口,而值類型不能繼承其他的值類型或類。  下面是一些概念的比較理解: 【重寫】與【重載】  一個基類與一個派生類,當一個基類的一個成員被重寫時,基成員和派生成員的簽名是相同的。而想要實現重載,需要不同的簽名。這就是兩者最大的不同。  重寫包含的兩個關鍵字:  virtual關鍵字表示一個成員可以在一個子類中被重寫。它可以用在方法、屬性、索引器和事件上。在派生類中,override關鍵字表示要對基類的一個虛成員進行重寫的意圖。  特別地,在C#中,默認情況下,函數不能被重寫。父類必須默認方法的重寫,此外,子類必須承認它要對方法進行重寫的意圖。這就防止子類在不知情的情況下對基類成員進行重寫。  其次,當一個成員以不同的簽名被重寫時,在派生類中會產生一個編譯器警告,這就防止在希望方法重寫的地方意外發生重載。 【構造函數】與【析構函數】  構造函數是對類進行初始化,而析構函數是對類進行清理。 共同點:  兩者都不能被繼承。所以,基類組件負責對基類成員,派生類組件負責對派生類成員。 不同點:  調用的順序相反。構造函數是從基類的構造函數自上而下地調用,而析構函數是被自下而上地調用,最后派生的組件最先被清理。  下面看實例,從結果中可以更加清楚的看到兩者的順序相反。 ? ? ? ? ?  ?前者為構造函數調用,后者為析構函數的調用。下面是代碼: 構造函數與析構函數的應用:  public class starter{public static void Main(){XClass obj = new XClass();}}public class ZClass{public ZClass(int param){Console.WriteLine("ZClass constructor");}}public class YClass : ZClass{public YClass(int param): base(YClass.MethodA()){Console.WriteLine("YClass consturctor");}public static int MethodA(){Console.WriteLine("YClass constructor initializer");return 0;}}public class XClass : YClass{public XClass():base(XClass.MethodA()){Console.WriteLine("XClass consturctor");}public static new int MethodA(){Console.WriteLine("XClass constructor initializer");return 0;}} 
                        
                        
                        public class Strater{public static void Main(){XClass obj = new XClass();}}public class ZClass{~ZClass(){Console.WriteLine("ZClass destructor");}}public class YClass : ZClass{~YClass(){Console.WriteLine("YClass desturctor");}}public class XClass : YClass{~XClass(){Console.WriteLine("XClass desturctor");}} 【抽象類】與【接口】 抽象類就是概念。abstract關鍵字使得一個類抽象化。抽象類的存在為繼承提供了廣闊的空間,不能為一個抽象類創建一個實例。 一個接口是一個協定,定義了從基類概括出來的必不可少的行為。一個接口要求制定一個行為集合,但是并不實現它。派生類型可以以一個恰當的方式自由地實現接口。接口必須被繼承,不能為一個接口創建一個實例。 知道了兩者的概念后,就會覺得兩者有相似之處,下面就是對兩者進行的一個簡單的比較: 相同: 一個接口類類似于一個抽象類。兩者都要被繼承,都不能被實例化。 抽象類的成員要求在派生類型中加以實現,接口的成員也要求在派生類型中加以實現。 不同點: 抽象類可以包含一些實現,而接口不能有實現。 抽象類可以繼承其他類和接口,而接口只能繼承其他接口。 抽象類可以包含字段,而接口沒有狀態。 抽象類具有構造函數和析構函數,而接口沒有。 接口可以被結構繼承,而抽象類不能。 接口可以支持多繼承,而抽象類只能支持單繼承。 一直覺得,接口的概念很難理解,最后,就用生活中的實例再來說說接口的應用: 車的行為包括點火、熄火、加速和減速等。而車又有很多類型,如小汽車、摩托車和公交車等等。它們都擁有車的上述行為,我們就可以用一個接口來封裝好這些行為。因為不同的車對這些行為的實現結果是不一樣的。如:小汽車和摩托車的加速是不一樣的。定義好了這樣一個接口,就可以讓不同的車自己去實現自身的一個和其它車不一樣的行為。 總結: 這一編的學習內容很基礎,在之前的學習中也接觸過。但總是感覺有些概念理解得很模糊,借這段復習時間,偶爾抽個時間看本書溫習整理整理,感覺效果還是不錯的。加上這一次也有了概念之間的對比和實例結果支撐,理解得也更加深刻了些。
總結
以上是生活随笔為你收集整理的Visual C#之核心语言的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: CSS Specificity--CSS
 - 下一篇: [leetcode] Pow(x, n)