學習c#視頻有幾天了,看完其語言基礎之後,我對c#語言基礎做了一個總結,來鞏固所記的知識,同時希望能給你幫助。 最近一直在看c#視頻,開始時看不懂,後來找師傅討論了一下,自己重新看是有感覺,所以又重新開始。針對這兩天的學習對c#語言基礎做一下總結。 數據類型 構成:數據類型,常量和變量,運算符和表達式,數組、結構和枚舉 數據類型包括值類型、引用類型和裝箱以及拆箱。 值類型數據存儲在棧中。棧:它是用於存儲固定長度的數據,例如int(每個int占用四個字節),每個程序在執行時都有自己的堆棧,其他程序不能訪問該堆棧。 引用類型數據存儲在堆中。堆:是由new分配的內存,一般速度比較慢,而且容易產生內存碎片,不過用起來最方便。(雖然對於堆得解釋字數也不多,但是始終感覺堆理解其堆來有點兒抽象,不怎麼明白。) 值類型 值類型就是一個包含實際數據的量。當我們定義一個值類型的變量時,c#會根據它聲明的類型,以堆棧方式分配一塊兒相應的存儲區域給這個變量。(這裡對於堆棧的理解只能是有一點,但是還表達不出來,希望高手指點。) 值類型包括:簡單類型、枚舉類型和結構類型。 簡單類型 在C#中出現的簡單類型共享一些特性。第一,它們都是.NET系統類型的別名。第二,由簡單類型組成的常量表達式僅在編譯時而不是運行時受檢測。最後,簡單類型可以按字面被初始化。以下為C#簡單類型歸類: 簡單類型是系統預置的,分為整數類型、浮點類型、小數類型(decimal類型)、字符類型和布爾類型。提高班第一年有一些VB的基礎,這裡我感覺可以和VB比較記憶。 通過比較我們可以發現。 1. VB中整型、長整型、字節型和C#整型所表示的意思(范圍)是一致。 2. VB中單精度和雙精度和C#浮點型所表示的意思(范圍)是一致的。 3. VB的貨幣型和C#小數型也是相似的。(不過,很明顯C#所表示的貨幣范圍遠遠超過了VB貨幣型所表示的范圍) 4. VB和C#同樣都具有字符串類型和布爾型 5. 明顯不同的是vb特有日期型。 有了VB的基礎理解C#沒有什麼困難。欠缺的只是對於它們的熟練程度。 結構類型 把一系列相關的信息組織成為一個單一實體的過程,這就是創建一個結構的過程。 [csharp] <span style="font-size:18px;"> struct person { string m_name; //姓名 int m_age; //年齡 string m_sex; //性別 } </span> 枚舉類型 主要用於表示一個邏輯相關聯的項和組合。使用關鍵字enum來定義。 [csharp] <span style="font-size:18px;"> enum Weekday { Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday } </span> 引用類型 引用類型的變量不存儲他們所代表的實際數據,而是存儲實際數據的引用。引用類型分兩步創建:首先在堆棧上創建一個引用變量,然後再堆上創建對象本身,在把這個內存的句柄(內存的首地址)賦給引用變量。 例子: [csharp] <span style="font-size:18px;"> String S1,S2; S1=”ABCD”; S2=S1; </span> 解釋:s1和s2都是指向字符串的引用變量,s1的值是字符串“ABCD”存放在內存地址中,這個就是對字符串的引用,兩個引用型變量之間的賦值,使得s1和s2都是對“ABCD”的引用。 引用類型包括:class(類)、interface(接口)、數組、delegate(委托)、object和string。 拆箱和裝箱 值類型與引用類型之間的轉換被稱為裝箱與拆箱。裝箱和拆箱是c#類型系統的核心。我們通過裝箱和拆箱操作可以輕松的實現值類型和引用類型的相互轉換。 例如: [csharp] <span style="font-size:18px;"> Int Num=123; //將123值賦給int型變量Num Object p=Num; //裝箱動作 Int q=int(p) //拆箱動作 </span> 常量和變量 常量就是程序運行期間其值不會改變的量。 變量是在程序運行過程中其值可以改變的量。 運算符和表達式 算數運算符: 關系運算符: 邏輯運算符(與(&&) 或(||)非(!)): 賦值運算符: 條件運算符: 條件運算符是一個三元運算符,可以看成一個if……else的簡化形式。 格式為:條件?真:假 舉例: 在控制台中輸入以下代碼: [csharp] <span style="font-size:18px;"> int x = 10; int y = 15; int z; Console.WriteLine (z = x > y ? x : y); </span> 結果如圖,很明顯顯示的是y說明是假。 流程控制 條件語句 If語句 句式: 第一種: [csharp] www.2cto.com <span style="font-size:18px;"> If (條件)語句;</span> 第二種: [csharp] <span style="font-size:18px;"> if (條件) { 語句塊 } Else { 語句塊 } </span> 此外在if中還可以嵌套if語句。 Switch語句 Switch是一個多分支結構的語句。語法結構為: [csharp] <span style="font-size:18px;"> switch (表達式) { Case常量1: 語句序列1; Break; Case常量2: 語句序列2; Break; …… Default: 語句序列n; Break; } </span> 循環語句 While語句 [csharp] <span style="font-size:18px;"> While (表達式) { 循環體語句塊 } </span> Do while語句 [csharp] <span style="font-size:18px;"> Do { 循環體語句塊 } while (表達式); </span> For 語句 [csharp] <span style="font-size:18px;"> For (表達式1;表達式2;表達式3) { 循環體語句 } </span> 其中表達式1是設置循環控制變量的初值,表達式2時布爾類型的表達式,表達式3是設置循環控制變量的增值(正負皆可)。PS:3個表達式都是可選的,默認表達式時,其後的分好“;”不能省。 Foreach語句 Foreach語句是C#新引入的,它表示收集一個集合中的各元素,並針對各元素執行內嵌語句。 語法格式: [csharp] <span style="font-size:18px;"> Foreach (類型 標示符 in 集合表達式)語句;</span> 標示符是指foreach循環的迭代變量,它只在foreach語句中有效,並且是一個只讀局部變量,也就是說在foreach語句中不能改寫這個迭代變量。 集合表達式是指被遍歷的集合,例如數組。 舉例: [csharp] <span style="font-size:18px;"> int m = 0; string mystring = "fsofknwlsnfoaafdagadf"; foreach (char mychar in mystring) { if (mychar == 'a') m++; } Console.WriteLine("字符串中總共有{0}個a", m); </span> 結果如圖: 跳轉語句 跳轉語句用於改變程序的執行流程,轉移制定之處。用於特定的上下文環境之中。 Continue語句 Continue語句只能用於循環語句中,它的作用是結束本輪循環,不再執行余下的循環體語句,對while和do_while結構的循環,在continue執行之後,就立刻測試循環條件,以決定循環是否繼續下去;對for結構循環,在continue執行之後,先求表達式3(循環增量部分),然後再測試循環條件。 例如:顯示1-100中能被3整除的整數。 [csharp] <span style="font-size:18px;"> for (int n = 1; n <= 100; n++) { if (n % 3 != 0) continue; { Console.WriteLine(n ); } } </span> 結果: Break語句 Break語句也只能用於循環語句中或者switch語句中,如果在循環語句執行到break語句,則會導致循環立刻結束,跳轉到循環語句的下一條語句。不管循環多少層,break語句只能從包含它的最內層跳出一層。如果在switch語句中執行到break語句,則立刻從switch語句中跳出,轉到switch語句的下一條語句。 看下面的例子: Return語句 Return語句出現在一個方法內。在方法中執行到return語句時,程序中的執行流程轉到調用這個方法處。如果方法沒有返回值(返回類型修飾位void),則使用“return”格式返回;如果方法有返回值,那麼使用“return表達式”格式,其後面跟的表達式就是方法的返回值。 Goto語句 Goto語句可以將程序的執行流程從一個地方轉移到另一個地方非常靈活。但正因為它靈活,所以容易造成程序結構混亂的局面,應該有節制地、合理使用goto語句。 異常處理 程序對異常的處理能使程序更加健壯。這裡就不做更多的說明 數組、結構和枚舉 數組:數組是一種包含若干變量的數據結構,這些變量都具有相同的數據類型並且排雷有序,因此可以用一個統一的數組名和下標唯一的確定數組中的元素。 數組使用時要先聲明然後在創建最後初始化數組,具體語法形式: [csharp] <span style="font-size:18px;">Type [ ] arrayname; Arrayname =new type[size] { val1,val2,val3,….valn }; </span> 或者結合起來寫: [csharp] <span style="font-size:18px;">Type [ ] arrayname = new type [size ] { val1,val2,val3,….valn };</span> Type可以是C#中任意的數據類型。 [ ] 是表明後面的變量是一個數組類型,必須放在數組名之前。 Arrayname 是數組名,遵循標識符的命名規范。 Size 表明數組原色的個數。 Val 則表示數組的具體值。 具體示例: 例子1: [csharp] <span style="font-size:18px;">Int [] course = new int [ 10 ] {1,2,3,4,5,6,7,8,9,10} // student 是一個含有10個int類型的數組。</span> 例子2:創建一個5個數的數組(100,50,60,70,99)並計算出他們的最大值和最小值。 代碼如下: [csharp] <span style="font-size:18px;"> #region 數組的實例 int max; int min; int[] Num = new int[5] { 100, 50, 60, 70, 99 }; max = min = Num[0]; for (int i = 0; i <= 4; i++) { if (Num[i] > max) { max = Num[i]; } if (Num[i] < min) { min = Num[i]; } } Console.WriteLine("您要求的數組中最大數為" + max + ";最小數為" + min); #endregion </span> 結構和枚舉和值類型中說的是一個,這裡就不多說了。 在總結c#語言基礎的過程中,我也不斷地看著以前學習的visual basic那本書,不得不說學好了vb在學習c#上就容易許多啊。他們之間好好多相同的地方。在和vb比較的過程中我同時又學到了不少以前不懂的東西。