• 2.1.1 語法概述程序員
• 在C# 2008代碼中,會看到各類標點符號來分割一系列語句。可不要小看這些標點符號,假如寫錯一個標點符號,編寫的程序就有可能編譯不經過。因此,就從這些小小的標點符號來開始C# 2008語法的學習。下面提供了C# 2008中使用的標點符號和它們的說明。
• 分號「;」:指明一條代碼語句的結束。
• 冒號「:」:
• 2.1.2 C# 2008中的註釋
• 在C# 2008中,註釋就像空白符同樣,會被忽略,可是在編寫代碼的時候很是有用。C# 2008有兩種標準註釋方式。第一種方式是單行註釋,在註釋開頭處加上標識符,用於提示編譯器忽略這一行後續的部分。第二種方式是多行註釋,在註釋的開頭和結尾都加上標識符。單行註釋用兩個正斜線來表示。例如:
• // 這是註釋。
• 單行註釋中,該行「//」以後的文本都會被編譯器認爲是註釋,註釋自動在行尾結束,其只能用於單行註釋。多行註釋用「/*」字符串開始,以「*/」字符串結束。例如:
• /*這是註釋*/
• /*這也是
• 註釋*/
• 2.2 常量和變量
• C# 2008是強類型語言,因此常量和變量都必須先聲明類型。當聲明瞭類型後,計算機就會知道處理什麼樣的數據,以及採用哪一種格式保存數據等。
• 在之前編寫程序時(使用C和C++),沒有提供豐富的數據類型,開發人員必須把基本數據類型組合到類和結構中,本身構建數據類型或者使用存儲在頭文件中的模板代碼(STL)或複雜的專用庫,例如MFC。如今,在C# 2008語言中,其支持CTS(Common Type System),其中的數據類型集合不只包括熟悉的基本類型,例如int類型、char類型和float類型等,還包括比較複雜的類型,例如string類型和decimal類型。C# 2008語言中,包括兩種類型。
• 值類型:值爲固定長度的數據,存儲在堆棧中。包括簡單類型、枚舉類型和結構類型等。
• 引用類型:值存儲在堆中。包括類類型、數組類型和接口類型等。
• 2.2.1 C# 2008預約義類型
• 【本節示例參考:\示例代碼\Chap02\TypeUse】
• C# 2008語言中,值類型能夠分爲:
• 簡單類型(內建類型)。
• 結構(用戶定義的值類型)。
• 枚舉。
• 簡單類型,是直接由一系列元素成員構成的數據類型。均爲.NET框架系統類型的別名,從計算機角度能夠把簡單類型分爲:
• 整數類型。
• 布爾類型。
• 實數類型。
• 2.2.2 常量
• 在程序運行過程當中,值不能被改變的量稱爲常量,即常量就是值固定不變的量。常量的型能夠是任何一種。聲明常量的格式:
• attributes constant -modifiers const type constant-declarators;
• 在上述聲明中,常量修飾符constant –
modifiers能夠是new、public、protected、internal、private。而type能夠是sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal、bool、string。例如:
• public const int x =1;
• 2.2.3 變量
• 在程序運行的過程當中,值能夠改變的量稱爲變量。一個變量應該有一個名字,在內存中佔據必定的存儲單元,在該單元中存放變量的值。與常量不一樣,變量的值能夠反覆賦數值。讀者要區分變量名和變量值,變量名其實是一個符號地址,在對程序編譯時由系統給每個變量名分配一個內存地址。在程序中從變量中取值,其實是經過變量名找到相應的內存地址,從存儲單元中讀取數據。
• 1.聲明變量
• 2.賦值變量
• 3.變量的類型
• 2.3 運算符、表達式及優先級
• 上一節介紹了類型和變量,數值類型的經常使用操做即爲數值計算,而計算就要涉及運算符。若是沒有運算符,那些類型就是靜止的,不能反應或執行有用的任務。C# 2008中的表達式,是由運算符、操做對象和標點符號連接而成的。
• C# 2008提供了大量的運算符,按照其處理操做數的不一樣大體能夠分爲3類,即一元運算符、二元運算符和三元運算符。主要的運算符如表所示。
• 2.3.1 算術運算符和算術表達式
• 【本節示例參考:\示例代碼\Chap02\NumberCirculation】
• C# 2008提供的算術操做符有五種:
• +加法運算符。
• -減法運算符。
• *乘法運算符。
• /除法運算符。
• %求餘運算符。
• 2.3.2 賦值運算符和賦值表達式
• 【本節示例參考:\示例代碼\Chap02\Compoundoperator】
• C# 2008提供了「=」賦值運算符,同時與賦值運算符相近的運算符還有「+=、-=、*=、/=、^=、<<= 、>>=」等複合賦值運算符。賦值的做用就是將一個數據賦給一個變量。例如「a=3」的做用就是將數據3賦給變量a。賦值的左邊必須是一個變量,屬性訪問器或索引訪問器的表達式。
• 在C# 2008中若是賦值運算符兩邊的操做數類型不一致,那就先要進行類型轉換,同時賦值運算符還能夠對變量進行連續賦值,例如a=b=c的表達式等價於a=(b=c)。讀者要注意「=」操做符是右關聯的。因此出現上面的等價關係。
• 2.3.3 關係運算符和邏輯運算符及表達式
• 【本節示例參考:\示例代碼\Chap02\Difference】
• 嚴格的說關係運算符也是路基運算符的一種,由於關係表達式的返回值老是布爾值。關係運算符用來比較兩個值。它有=、!=、〈、〉、〈
=和>=。邏輯運算符用來擴展條件語句。運算符號中?:是三元運算符,&&、||、&、^、|是二元操做符,而!是一元操做符。
• 2.3.4 位運算符和位運算
• 【本節示例參考:\示例代碼\Chap02\ByteOperation】
• 在計算機中,任何信息都是以二進制形式保存的,「&」、「|」、「^」除了能夠做爲
• 邏輯運算符,也能夠做爲位運算符,它們對兩個操做數中的每個二進制位都進行運算。除了這些位運算操做外,還有<<|、>>和~能夠對數據按二進制位進行位操做。在這些運算符號中,只有~是一元運算符,而其餘的都是二元運算符。同時,運算符的操做數只能是整數型或字符型的數據,不能爲實型數據。位運算符號的簡要說明見表。
• 2.3.5 其餘特殊操做符
• 除了上面的各類操做符號外,還有一些特殊的操做符號,以下:
• 1.三元操做符
• 「?:」三元操做符也稱爲條件操做符,該操做符是右關聯的。例如:表達式「a?b:c?d:e」將按「a?b:(c?d:e)」形式執行。該運算符的運算規則對於條件表達式「a?x:y」,先計算條件a,而後進行判斷。若是a的值爲true,就計算x的值;不然計算y的值。
• 2.自增和自減操做符
• 自增和自減操做符有先後綴之分。對於前綴操做符的規則是「先增減,後使用」,然後綴操做符則正好相反,是「先使用,後增減」。
• 3.Checked和unchecked操做符
• Checked和unchecked操做符用於整型算術運算時控制當前環境中的溢出檢查。
• 2.3.6 運算符的優先級
• 優先級就是在表達式中的運算順序,上述介紹的運算符都有不一樣的優先級。各運算符的優先級詳細見表。
• 2.4 程序的流程控制
• 從結構化程序設計角度出發,程序有三種結構,使程序的執行重定向到代碼的不一樣部分。它們分別是順序結構、選擇結構和循環結構。結構的使用主要體現了開發人員的思惟,若是開發人員的思惟清晰,能夠利用結構產生邏輯明晰合理的代碼,混亂的思惟每每會產生含有邏輯錯誤的代碼。
• 2.4.1 選擇結構
• 當程序中須要進行兩個或兩個以上的選擇時,能夠根據條件判斷來選擇將要執行的一組語句。C# 2008中提供了if和switch語句。
• 1.if語句:if-else是經常使用的關鍵字,在C# 2008中會被大量用於條件判斷等場合。if語句有多種形式的應用。
• 2.if語句的嵌套:在if語句中又包括一個或多個if語句成爲if語句的嵌套。
• 3.switch語句:switch語句是多分支選擇語句,用於將一個表達式的值同許多其餘值比較,並按比較結果選擇下面該執行哪些語句。雖然,上述的功能能夠用嵌套的if語句來處理,但分支較多、嵌套的語句層數多、程序冗長且可讀性低。
• 2.4.2 循環結構
• 循環結構是結構化程序設計的基本結構之一,它和順序結構、選擇結構共同做爲各類複雜程序的基本構造單元,提供了根據指定條件反覆執行某部分代碼的功能。C# 2008提供了while語句、do—
while語句和for語句。
• 1.while語句
• 2.do—
while語句
• 3.for語句
• 4.foreach語句
• 5.循環的嵌套
• 6.停止循環
• 2.5 類型轉換
• 在編寫程序過程當中,會常常遇到這種狀況,就是須要將一種數據類型的值賦給另外一種不一樣數據類型的變量。例如,從int類型轉換到long類型數據類型之間的轉換等,因爲數據類型有差別,在賦值時就須要進行數據類型的轉換。在C# 2008中提供了以下的轉換:
• 隱式轉換。
• 顯式轉換。
• 使用命令的顯示轉換。
• 2.5.1 隱式轉換
• 【本節示例參考:\示例代碼\Chap02\TestTransformation1】
• 隱式轉換就是不須要加以進行的轉換,即在轉換過程當中,編譯器無需對轉換進行詳細檢查就可以安全的執行轉換。實際上就是從低精度的數值類型向高精度的數值類型轉換。要實現隱式轉換,須要同時知足兩個條件,第一是兩種類型彼此兼容,第二是目標類型的取值範圍要大於源類型。通常來講,轉換的過程當中要保證不會致使信息丟失。
• 隱式轉換的類型有隱式數值轉換、隱式枚舉轉換和隱式引用轉換;其發生的場合也包括函數調用、表達式計算和分配等。
• 2.5.2 顯式轉換
• 【本節示例參考:\示例代碼\Chap02\TestTransformation2】
• 當兩種類型不知足隱式轉換的兩個條件,即兩種類彼此不兼容,或目標類型取值範圍小於源類型時,隱式轉換就沒法進行,這時就須要進行顯式類型轉換。顯式類型轉換又叫強制類型轉換,須要用戶必須明確的指定轉換的類型。顯式類型轉換的通用格式以下:
• 目標類 變量 =(目標類型)值
• 2.5.3 使用命令的顯示轉換
• 【本節示例參考:\示例代碼\Chap02\TestTransformation3】
• 經過convert類提供的方法也能夠實現各類類型的轉換,其提供的方法如表所示。
• 2.6 小結
• 本章講述了數值類型、常量、變量、運算符號和流程控制等一些程序員入門的必備知識。
• 數值類型、常量、變量和運算符號雖然簡單,可是它們是程序代碼的基礎,沒有它們就沒有程序代碼。若是要想當一名好的程序員,它們的熟練掌握是一項基本功。
流程控制是程序開發的經典內容,是程序設計中必不可少的一部分。主要包括順序結構、選擇結構、循環結構。經過對這些知識的運用,讀者能夠編寫出處理各類狀況的代碼。本章的內容都是一些基本的知識,也是進入C# 2008語言學習的必經之門。