1 / 72

C# 語 言與Razor語法

6. C# 語 言與Razor語法. 6-1 C# 語言與 Razor 語法 6-2 C# 語言 的基本撰寫規格 6-3 變數與資料型態 6-4 運算子 6-5 流程控制 6-6 陣列 6-7 函數 6-8 物件的使用與型態轉換. 6-1 C# 語言與 Razor 語法. 6-1-1 認識 C# 語言與 Razor 語法 6-1-2 Razor 語法、伺服端程式碼與 ASP.NET 6-1-3 Razor 的基本語法. 6-1-1 認識 C# 語言與 Razor 語法 -C# 語言.

keagan
Download Presentation

C# 語 言與Razor語法

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 6 C#語言與Razor語法 • 6-1 C#語言與Razor語法 • 6-2 C#語言的基本撰寫規格 • 6-3 變數與資料型態 • 6-4 運算子 • 6-5 流程控制 • 6-6 陣列 • 6-7 函數 • 6-8 物件的使用與型態轉換

  2. 6-1 C#語言與Razor語法 • 6-1-1 認識C#語言與Razor語法 • 6-1-2 Razor語法、伺服端程式碼與ASP.NET • 6-1-3 Razor的基本語法

  3. 6-1-1 認識C#語言與Razor語法-C#語言 • C#語言(其發音是See-Sharp)是由微軟公司Anders Hejlsberg領導的小組開發的程式語言,Anders Hejlsberg擁有豐富的程式語言和平台的開發經驗,曾經開發著名的Visual J++、Borland Delphi和Turbo Pascal等。 • C#語言是在2000年6月正式推出的一種相當新的程式語言,目前的最新版本是C# 5.0版,C#是一種簡單、現代化和物件導向的程式語言,屬於微軟.NET Framework平台的程式語言,支援結構化、物件基礎和物件導向程式設計。事實上,C#語言的程序式和物件導向語法都是源於C++語言,再參考其他多種程式語言的語法,最著名的就是Delphi和Java。

  4. 6-1-1 認識C#語言與Razor語法- Razor語法 • Razor語法可以讓網頁程式開發者在靜態HTML網頁的標籤中內嵌伺服端程式碼,例如:Visual Basic或C#程式碼,其原始設計的目的是希望開發者能夠更流暢的進行程式碼撰寫,並且讓我們快速整合伺服端程式碼來建立動態網頁內容,和開發資料驅動的Web網站。 • 以ASP.NET技術來說,Web Forms和MVC都是將HTML標籤和伺服端程式碼分割成不同的程式檔案,WebMatrix使用的Web Pages開發模型,則是將伺服端程式碼內嵌於HTML標籤中,可以讓學生、初學者或傳統ASP和PHP技術的網頁開發者更容易進入或轉換至.NET平台的ASP.NET伺服端網頁技術。

  5. 6-1-2 Razor語法、伺服端程式碼與ASP.NET-圖例 • Razor語法、ASP.NET與.NET Framework之間的關係,如下圖所示:

  6. 6-1-2 Razor語法、伺服端程式碼與ASP.NET-網頁內容 • 現在,我們回到Razor語法的ASP.NET程式碼,因為Web網頁擁有Razor語法,所以,網頁內容可以分為兩種,如下所示: • 客戶端內容(Client Content):客戶端內容包含HTML標籤、CSS樣式碼、客戶端腳本程式碼和純文字內容,其中客戶端腳本程式碼可以是JavaScript或相關函數庫的程式碼,例如:jQuery。 • 伺服端程式碼(Server Code):伺服端程式碼是使用Razor語法,將Visual Basic或C#程式碼內嵌入客戶端內容。

  7. 6-1-3 Razor的基本語法-說明 • Razor語法類似傳統ASP和PHP,它是使用「@」字元在HTML標籤中內嵌伺服端程式碼,可以在客戶端內容加入單行程式碼、多行程式區塊或內嵌運算式等。 • Razor語法的ASP.NET程式,其檔案的副檔名為: .cshtml(C#語言)或.vbhtml(Visual Basic語言) 。

  8. 6-1-3 Razor的基本語法-單行程式碼 • Razor語法是使用「@{」和「}」包圍C#程式碼(在@和{之間不能有空白字元),如下所示: @{ var amount = 100; } @{ var msg = "第1個ASP.NET程式"; } • 上述2行C#程式碼分別使用「@{」和「}」包圍單行程式碼。

  9. 6-1-3 Razor的基本語法-多行程式區塊 • Razor語法也可以使用「@{」和「}」包圍多行C#程式碼,如下所示: @{ var amount = 100; var msg = "第1個ASP.NET程式"; } • 「@{」和「}」包圍的程式區塊是2行C#程式碼。

  10. 6-1-3 Razor的基本語法-內嵌運算式 • Razor語法可以使用@字元,將C#運算式直接內嵌於HTML標籤中,如下所示: <p>總價: @amount</p> <p>訊息: @msg</p> • 上述<p>標籤中內嵌有Razor語法的運算式,可以顯示變數amount和msg的值。

  11. 6-1-3 Razor的基本語法-混用HTML標籤與伺服端程式碼 • 在Razor語法的多行程式區塊中,可以包含HTML標籤、純文字和程式碼,如下所示: @{ var name = "Joe"; <div>歡迎 <b>@name</b></div> } • 上述程式區塊宣告變數name,第2行包含HTML標籤、文字內容和程式碼@name。

  12. 6-2 C#語言的基本撰寫規格-說明 • 程式碼在撰寫時如果使用一致規則,在程式維護上將有一定助益,撰寫規格的目的是為了建立一致的程式風格,以便進行小組(Teamwork)的程式開發。

  13. 6-2 C#語言的基本撰寫規格-命名規則 • 程式設計者在替元素命名時,需要遵循程式語言的語法。而且元素命名十分重要,因為一個好名稱如同程式註解,可以讓程式更容易了解。C#語言的基本命名原則,如下所示: • 名稱不可以使用C#語言的關鍵字或系統的物件名稱。 • 必須是英文字母或底線「_」開頭,如果以底線開頭,至少需要一個英文字母或數字。 • 在名稱中間不能有句點「.」或空白,只能是英文字母、數字和底線。 • 區分英文大小寫,hello、Hello和HELLO分別代表不同的名稱。 • 在宣告的有效範圍內需唯一,有效範圍請參閱第6-7-2節的函數。

  14. 6-2 C#語言的基本撰寫規格-命名範例 • C#語言一些元素名稱的範例,如下表所示:

  15. 6-2 C#語言的基本撰寫規格- C#語言的註解 • 程式註解(Comments)是程式十分重要的部分,良好註解不但能夠容易了解程式目的,在維護上也可以提供更多的資訊。C#程式註解是以「//」符號開始的列,或程式列之後在此符號後的文字內容,如下所示: // 宣告變數 var amount = 100; // 宣告變數 • 程式註解也可以是使用「/*」和「*/」符號括起的文字內容,如下所示: /* 顯示不同 的歡迎訊息 */

  16. 6-2 C#語言的基本撰寫規格-Razor語法的註解 • 在Razor語法的程式區塊可以使用之前C#語言註解,也可以使用Razor語法的註解,這是使用「@*」和「*@」包圍的一行至多行註解文字,如下所示: @{ @* 變數的宣告 *@ var size1,size2; }

  17. 6-2 C#語言的基本撰寫規格-對於太長的程式碼 • C#語言的程式碼列如果太長,基於程式編排的需求,太長程式碼並不容易閱讀,我們可以將它分成兩列來編排。因為C#語言屬於自由格式編排的語言,如果程式碼需要分成兩列,直接分割即可,如下所示: var msg = "大家好!這是比較長的程式碼, " + "所以需要分為兩列."; • 上述程式碼有2個字串,所以使用字串連接運算字「+」連接2個字串(此運算子的說明請參閱本章後)。不過,我們不能在程式碼直接分割字串,如下所示: var msg = "大家好!這是比較長的程式碼, 所以需要分為兩列.";

  18. 6-2 C#語言的基本撰寫規格-額外的空白字元 • 在程式敘述加入額外空白字元,並不會影響程式碼的執行,如下所示: @{ var size = 1000; }

  19. 6-2 C#語言的基本撰寫規格-程式碼的縮排 • 在撰寫程式時記得使用縮排編排程式碼,適當縮排程式碼,可以讓程式更加容易閱讀,因為可以反應出程式碼的邏輯和迴圈架構,例如:迴圈區塊的程式碼縮幾格編排,如下所示: for ( i = 0; i <= 10; i++ ) { total = total + i; }

  20. 6-3 變數與資料型態 • 6-3-1 變數的資料型態 • 6-3-2 變數、常數宣告與指定敘述 • 6-3-3 HTML編碼與純文字內容

  21. 6-3-1 變數的資料型態-1

  22. 6-3-1 變數的資料型態-2

  23. 6-3-2 變數、常數宣告與指定敘述-變數宣告 • 變數在程式碼扮演的角色是儲存程式執行中的一些暫存資料,在C#語言是使用資料型態名稱開頭來宣告變數,如下所示: double area; string name; • 上述程式碼宣告名為area和name的變數,資料型態分別為double和string。我們也可以在同一列程式碼宣告多個變數,只需使用「,」號分隔,如下所示: uint height, width; • 上述程式碼宣告2個正整數uint資料型態的變數。

  24. 6-3-2 變數、常數宣告與指定敘述-變數初值 • 如果需要,還可以在宣告同時指定變數的初值,如下所示: double area = 25.0; string name = "陳會安"; • 上述程式碼使用「=」等號指定變數area和name的初值。

  25. 6-3-2 變數、常數宣告與指定敘述-使用var關鍵字宣告變數 • 對於伺服端程式碼來說,如果無法確認資料型態時,我們可以使用var關鍵字來宣告變數,如此在宣告變數時,就不用決定變數的資料型態,如下所示: var len = 150; var title = "C#程式設計";

  26. 6-3-2 變數、常數宣告與指定敘述-文字值 • 當變數的初值或之後指定敘述指定的值是字元、整數值、浮點數或字串等常數值,就稱為「文字值」(Literals)。字串的文字值是使用雙引號括起,字元的文字值是使用單引號括起,如下所示: string page = "我的首頁"; char a = 'A'; • 整數文字值預設是int資料型態,如果宣告uint、long或ulong資料型態的變數,我們需要在字尾加上字尾型態字元,指明文字值的資料型態:uint是U/u ,long是L/l ,ulong是UL/ul ,float是f/F ,decimal是m/M 。

  27. 6-3-2 變數、常數宣告與指定敘述-指定敘述 • 在C#宣告變數後,因為變數是用來儲存暫存資料,我們可以隨時指定或更改變數值,指定敘述是使用「=」等號來指定變數值。例如:指定變數height的值,如下所示: height = 500u; • 上述程式碼使用指定敘述指定變數值,並且使用字尾型態字元指定成正整數的文字值。當然變數也可以指定成其他變數的值,如下所示: width = height;

  28. 6-3-2 變數、常數宣告與指定敘述-常數宣告與使用 • 程式碼的常數是使用一個常數名稱來取代固定的數值或字串,與其說是一種變數,不如說是名稱轉換,將一些值使用有意義的名稱來取代。C#語言的常數在宣告時一定需要指定其值,如下所示: const double PI = 3.1415926; • 上述程式碼使用const關鍵字宣告圓周率常數PI。在C#程式碼可以直接使用常數來計算圓面積,如下所示: area = PI * 4 * 4;

  29. 6-3-3 HTML編碼與純文字內容-HTML編碼 • Razor語法在使用「@」字元開頭顯示文字內容時,ASP.NET自動會執行HTML編碼,即將「<」符號編碼成&lt;,「>」符號編碼成&gt;等,以避免與HTML標籤碼衝突,造成顯示錯誤,如下所示: @{ string name = "<Joe>"; } <div>姓名: @name</div> • 上述變數name的值包含「<」和「>」符號,因為ASP.NET自動執行HTML編碼,所以最後輸出的編碼字串,如下所示: <div>姓名: &lt;Joe&gt;</div>

  30. 6-3-3 HTML編碼與純文字內容-「@:」符號與<text>標籤 • 在Razor語法程式區塊如果需要顯示純文字,可以在純文字前加上「@:」開頭,如果是多行文字內容,請使用<text>標籤,如下所示: @{ @:兒子姓名> @son <br/> <text> 我的姓名是> <strong>@name</strong><br/> 目前時間是< @DateTime.Now </text> } • 第1行純文字前使用「@:」開頭,之後是程式碼和<br/>標籤,然後使用<text>標籤包圍2行包含純文字、標籤和程式碼的內容。

  31. 6-4 運算子 • 6-4-1 運算子的優先順序 • 6-4-2 算術與字串連接運算子 • 6-4-3 關係運算子 • 6-4-4 邏輯運算子 • 6-4-5 指定運算子

  32. 6-4 運算子 • 在C#指定敘述的等號右邊可以是運算式或是條件運算式,這些都是使用「運算子」(Operator)和「運算元」(Operand)組成的運算式。 • C#語言提供完整算術(Arithmetic)、關係(Relational)和邏輯(Logical)運算子。一些運算式的範例,如下所示: a + b – 1 a >= b a > b && a > 1 • 運算式變數a、b和數值1都屬於運算元,「+」、「-」、「>=」、「>」和「&&」為運算子。

  33. 6-4-1 運算子的優先順序-說明 • C#語言的運算子分為很多種,在同一個運算式如果使用多種運算子,為了讓運算式能夠得到相同的運算結果,運算式是以運算子預設的優先順序進行運算,也就是我們熟知的「先乘除後加減」口訣,如下所示: a + b * 2 • 上述運算式先計算b*2後才和a相加,這就是運算子優先順序「*」大於「+」。

  34. 6-4-1 運算子的優先順序-預設的優先順序

  35. 6-4-2 算術與字串連接運算子-算術運算子 • C#語言的算術運算子就是常用的數學運算子,大部分運算子都是二元運算子(Binary Operators),需要2個運算元。其中+、-運算子也可以是單元運算子(Unary Operators)的正負號。各種算術運算子的說明與範例,如下表所示:

  36. 6-4-2 算術與字串連接運算子-字串連接運算子 • 「+」運算子對於數值資料型態來說,是加法,可以計算兩個運算元的總和。如果運算元的其中之一或兩者都是字串資料型態時,「+」運算子就是字串連接運算子,可以連接多個字串變數或文字值,如下表所示:

  37. 6-4-3 關係運算子 • C#語言的關係運算式是一種比較運算,通常是使用在迴圈和條件敘述的判斷條件。C#語言的關係運算子(Relational Operators)說明與範例,如下表所示:

  38. 6-4-4 邏輯運算子-說明 • C#語言的條件運算式(Conditional Expressions)是一種複合運算式,其每一個運算元是關係運算子建立的關係運算式。如果有多個關係運算式就需要使用邏輯運算子(Logical Operators)來連接,如下所示: a > b && a > 1 • 上述條件運算式先執行a > b的運算,然後才是a > 1。

  39. 6-4-4 邏輯運算子-種類 • C#語言的邏輯運算子說明與範例,如下表所示:

  40. 6-4-5 指定運算子 • C#指定運算子除了使用指定敘述「=」等號外,指定運算子還可以配合其他運算子來簡化運算式,建立簡潔的算術運算式,如下表所示:

  41. 6-5 流程控制 • 6-5-1 是否選和二選一 • 6-5-2 多選一的條件敘述 • 6-5-3 for與foreach迴圈 • 6-5-4 while與do/while迴圈 • 6-5-5 break和continue關鍵字

  42. 6-5 流程控制 • 流程控制是使用條件運算式來進行判斷,以便執行不同區塊的程式碼,或重複執行指定區塊的程式碼。流程控制指令主要分成兩類,如下所示: • 條件控制:條件控制是一個選擇題,可能是單一選擇或多選一,依照條件運算式的結果,決定執行哪一個區塊的程式碼。 • 迴圈控制:迴圈控制可以重複執行指定區塊的程式碼,而且在迴圈中擁有結束條件,可以結束迴圈的執行。

  43. 6-5-1 是否選和二選一-if是否選條件敘述(1) • if條件敘述是一種是否執行的單選題,只是決定是否執行程式區塊內的程式碼,如果條件運算式的結果為true,就執行之後的程式區塊。例如:判斷學生成績是否及格,如下所示: @{ int grade = 65; if (grade >= 60) { <div>陳會安成績及格: @grade</div> } } • if條件如果為true,就執行程式區塊的程式碼,顯示成績及格,如果false就不執行程式碼。

  44. 6-5-1 是否選和二選一-if是否選條件敘述(2) • 因為if等條件或迴圈敘述本身是一個程式區塊,可以省略「@{」和「}」,直接在if關鍵字前加上「@」符號即可,如下所示: @if (grade < 60) { @:江小魚成績不及格: @grade<br/> }

  45. 6-5-1 是否選和二選一-if/else二選一條件敘述 • if條件敘述是選擇執行或不執行程式區塊的單選題。如果條件是擁有排它情況的2個程式區塊,只能二選一,我們可以加上else關鍵字。如果if條件為true,就執行else之前的程式區塊;false執行else之後的程式區塊,如下所示: @{ int grade; grade = 58; if (grade >= 60) { <div>江小魚成績及格: @grade</div> } else { @:江小魚成績不及格: @grade<br/> } }

  46. 6-5-2 多選一的條件敘述-if/else/if多選一條件敘述 • if/else/if多選一條件敘述是if/else條件的擴充,只需重複使用if/else條件,就可以建立多選一條件敘述。例如:使用年齡來檢查購票種類,如下所示: @{ int age = 25; if (age <= 12) { @:半票<br/> } else if (age <= 65) { @:全票<br/> } else { @:優惠票<br/> } }

  47. 6-5-2 多選一的條件敘述- switch多選一條件敘述 • C#語言的另一種多選一條件敘述是switch多條件敘述,它是依照符合條件執行不同程式區塊的程式碼,例如:學生成績是使用GPA的A、B、C、D來打成績,我們可以顯示轉換的成績範圍,如下所示: @switch (grade) { case 'A': @:超過80分<br/> break; case 'B': @:70~79分<br/> break; case 'C': @:60~69分<br/> break; default: @:低於60分<br/> break; }

  48. 6-5-3 for與foreach迴圈-for迴圈敘述(1) • 在for迴圈預設擁有一個計數器,計數器每次增加或減少一個值,直到for迴圈的結束條件成立為止,例如:計算1加到10的總和,每次增加1,如下所示: for (i = 1; i <= 10; i++) { total += i; }

  49. 6-5-3 for與foreach迴圈-for迴圈敘述(2) • 相反情況,我們可以使用遞減for迴圈從5到1,計數器是使用i--,表示每次遞減1,如下所示: for ( i = 5; i >= 1; i-- ) { … }

More Related