這幾天一直在復習C#基礎知識,過程中也發現了自己以前理解不清楚和混淆的概念。現在給大家分享出來我的筆記: 一,.NET平台的重要組成部分都是有哪些 1)FCL (所謂的.NET框架類庫) 這些類是微軟事先定義好的。 例如當我們新創建一個windows窗體應用程序是,VS會幫我們自動生成下面的代碼: using System; using System.Collections.Generic; using System.Text; 這些就是微軟事先為程序員定義好的類庫。程序員可以直接使用的。 2)CLR (所謂的公共語言運行時) 創建部署.NET程序的必備環境 使用C#,F#,VB等語言都可以來創建.NET應用程序。這時候就需要一個公共語言規范,來把不同的語言解釋成.NET FramWork認識的東西。 二,什麼是程序集 程序集主要有MSIL組成(所謂的微軟中間語言,主要由dll文件組成) 不同編程語言程序被.NET FrameWork編譯成程序集(dll文件),當程序需要被執行時,通過CLR中的JIT(及時編譯器)編譯成本地代碼,並將指令發送給CPU執行。 程序集一般有兩種:.dll和.exe文件(但是不是所有的dll和exe都叫程序集) 比如:我們在同一個解決方案下,建立多個應用程序或者類庫文件。這些程序或者類庫編譯後就會變成不同的程序集。他們之間是相互獨立的。之間如果想要相互訪問,需要添加引用。 三,Parse轉換和Convert轉換的區別 1)Parse轉換 ①Parse轉換只能轉換字符串 ②自變量是指定的數據類型才可以轉換成功 下面的是.NET Reflector編譯的源代碼 2)Convert轉換 ①可以轉換其他類型(如:類) ②與Parse的區別就是,轉換前會對被轉換的對象進行判斷,如果對象為null則會轉換失敗 下面是實例源代碼: 復制代碼 class Program { static void Main(string[] args) { string a = Console.ReadLine(); //Parse只可以轉換字符串 int b = Int32.Parse(a); //Convert可以轉換類等對象 ParseNumber parNum = new ParseNumber(); //這種寫法編譯器會報錯 //int b = Int32.Parse(parNum); int c = Convert.ToInt32(parNum); Console.WriteLine(b); Console.WriteLine(b.GetType()); Console.ReadKey(); } } class ParseNumber { private int nunm; public int Num { get; set; } } 復制代碼 四,數據類型的存儲位置 1)存儲在棧中的數據類型 所有數值類型,char,bool,枚舉,結構體 2)存儲在堆中 string,數組,類 管這些類型,他們的變量的聲明都是保存在棧裡,真實的對象保存在堆裡面,棧裡面的變量存儲打的是對象的地址。 下面以數組來簡單說一下這個問題: //聲明一個一維數組 int[] arr = new int[4]; 那麼這個表達式的執行順序是什麼呢? ①首先程序會在棧中開辟一段名為arr的int[]類型的空間 ②然後在堆中開辟一個int[]對象,再該對象中會有4塊連續的內存空間 ③堆中的對象返回類型為地址,即new int[4]表達式返回的是地址