學習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#沒有什麼困難。欠缺的只是對於它們的熟練程度。
結構類型
把一系列相關的資訊組織成為一個單一實體的過程,這就是建立一個結構的過程。
struct person { string m_name; //姓名 int m_age; //年齡 string m_sex; //性別 }
枚舉類型
主要用於表示一個邏輯相關聯的項和組合。使用關鍵字enum來定義。
enum Weekday { Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday }
參考型別
參考型別的變數不儲存他們所代表的實際資料,而是儲存實際資料的引用。參考型別分兩步建立:首先在堆棧上建立一個引用變數,然後再堆上建立對象本身,在把這個記憶體的控制代碼(記憶體的首地址)賦給引用變數。
例子:
String S1,S2; S1=”ABCD”; S2=S1;
解釋:s1和s2都是指向字串的引用變數,s1的值是字串“ABCD”存放在記憶體位址中,這個就是對字串的引用,兩個引用型變數之間的賦值,使得s1和s2都是對“ABCD”的引用。
參考型別包括:class(類)、interface(介面)、數組、delegate(委託)、object和string。
拆箱和裝箱
實值型別與參考型別之間的轉換被稱為裝箱與拆箱。裝箱和拆箱是c#類型系統的核心。我們通過裝箱和拆箱操作可以輕鬆的實現實值型別和參考型別的相互轉換。
例如:
Int Num=123; //將123值賦給int型變數Num Object p=Num; //裝箱動作 Int q=int(p) //拆箱動作
常量和變數
常量就是程式運行期間其值不會改變的量。
變數是在程式運行過程中其值可以改變的量。
運算子和運算式
算數運算子:
關係運算子:
邏輯運算子(與(&&) 或(||)非(!)):
賦值運算子:
條件運算子:
條件運算子是一個三元運算子,可以看成一個if……else的簡化形式。
格式為:條件?真:假
舉例:
在控制台中輸入以下代碼:
int x = 10; int y = 15; int z; Console.WriteLine (z = x > y ? x : y);
結果,很明顯顯示的是y說明是假。
流程式控制制 條件陳述式
If語句
句式:
第一種:
If (條件)語句;
第二種:
if (條件) { 語句塊 } Else { 語句塊 }
此外在if中還可以嵌套if語句。
Switch語句
Switch是一個多分支結構的語句。文法結構為:
switch (運算式) { Case常量1: 語句序列1; Break; Case常量2: 語句序列2; Break; …… Default: 語句序列n; Break; }
迴圈語句
While語句
While (運算式) { 迴圈體語句塊 }
Do while語句
Do { 迴圈體語句塊 } while (運算式);
For
語句
For (運算式1;運算式2;運算式3) { 迴圈體語句 }
其中運算式1是設定迴圈控制變數的初值,運算式2時布爾類型的運算式,運算式3是設定迴圈控制變數的增值(正負皆可)。PS:3個運算式都是可選的,預設運算式時,其後的分好“;”不能省。
Foreach語句
Foreach語句是C#新引入的,它表示收集一個集合中的各元素,並針對各元素執行內嵌語句。
文法格式:
Foreach (類型 標示符 in 集合運算式)語句;
標示符是指foreach迴圈的迭代變數,它只在foreach語句中有效,並且是一個唯讀局部變數,也就是說在foreach語句中不能改寫這個迭代變數。
集合運算式是指被遍曆的集合,例如數組。
舉例:
int m = 0; string mystring = "fsofknwlsnfoaafdagadf"; foreach (char mychar in mystring) { if (mychar == 'a') m++; } Console.WriteLine("字串中總共有{0}個a", m);
結果
跳躍陳述式
跳躍陳述式用於改變程式的執行流程,轉移制定之處。用於特定的上下文環境之中。
Continue語句
Continue語句只能用於迴圈語句中,它的作用是結束本輪迴圈,不再執行餘下的迴圈體語句,對while和do_while結構的迴圈,在continue執行之後,就立刻測試迴圈條件,以決定迴圈是否繼續下去;對for結構迴圈,在continue執行之後,先求運算式3(迴圈增量部分),然後再測試迴圈條件。
例如:顯示1-100中能被3整除的整數。
for (int n = 1; n <= 100; n++) { if (n % 3 != 0) continue; { Console.WriteLine(n ); } }
結果:
Break語句
Break語句也只能用於迴圈語句中或者switch語句中,如果在迴圈語句執行到break語句,則會導致迴圈立刻結束,跳轉到迴圈語句的下一條語句。不管迴圈多少層,break語句只能從包含它的最內層跳出一層。如果在switch語句中執行到break語句,則立刻從switch語句中跳出,轉到switch語句的下一條語句。
看下面的例子:
Return語句
Return語句出現在一個方法內。在方法中執行到return語句時,程式中的執行流程轉到調用這個方法處。如果方法沒有傳回值(傳回型別修飾位void),則使用“return”格式返回;如果方法有傳回值,那麼使用“return運算式”格式,其後面跟的運算式就是方法的傳回值。
Goto語句
Goto語句可以將程式的執行流程從一個地方轉移到另一個地方非常靈活。但正因為它靈活,所以容易造成程式結構混亂的局面,應該有節制地、合理使用goto語句。
異常處理
程式對異常的處理能使程式更加健壯。這裡就不做更多的說明
數組、結構和枚舉
數組:數組是一種包含若干變數的資料結構,這些變數都具有相同的資料類型並且排雷有序,因此可以用一個統一的數組名和下標唯一的確定數組中的元素。
數組使用時要先聲明然後在建立最後初始化數組,具體文法形式:
Type [ ] arrayname;Arrayname =new type[size] { val1,val2,val3,….valn };
或者結合起來寫:
Type [ ] arrayname = new type [size ] { val1,val2,val3,….valn };
Type可以是C#中任意的資料類型。
[ ] 是表明後面的變數是一個數群組類型,必須放在數組名之前。
Arrayname
是數組名,遵循標識符的命名規範。
Size 表明數組原色的個數。
Val 則表示數組的具體值。
具體樣本:
例子1:
Int [] course = new int [ 10 ] {1,2,3,4,5,6,7,8,9,10} // student 是一個含有10個int類型的數組。
例子2:建立一個5個數的數組(100,50,60,70,99)並計算出他們的最大值和最小值。
代碼如下:
#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
結構和枚舉和實值型別中說的是一個,這裡就不多說了。
在總結c#語言基礎的過程中,我也不斷地看著以前學習的visual basic那本書,不得不說學好了vb在學習c#上就容易許多啊。他們之間好好多相同的地方。在和vb比較的過程中我同時又學到了不少以前不懂的東西。