C#程式設計入門經典之C#的基本文法

來源:互聯網
上載者:User

C#代碼的外觀和操作方式與C++和Java非常類似。初看起來,其文法可能比較混亂,不像書面英語和其他語言。但是,在C#編程中,使用的樣式是比較清晰的,不用花太多的力氣就可以編寫出可讀性很強的代碼。

  與其他語言的編譯器不同,無論代碼中是否有空格、斷行符號符或tab字元(這些字元統稱為空白字元),C#編譯器都不考慮這些字元。這樣格式化代碼時就有很大的自由度,但遵循某些規則將有助於使代碼易於閱讀。

  C#代碼由一系列語句組成,每個語句都用一個分號來結束。因為空白格被忽略,所以一行可以有多個語句,但從可讀性的角度來看,通常在分號的後面加上斷行符號符,這樣就不能在一行上放置多個語句了。但一句代碼放在多個行上是可以的(也比較常見)。

  C#是一個塊結構的語言,所有的語句都是代碼塊的一部分。這些塊用花括弧來界定("{" 和 "}"),代碼塊可以包含任意多行語句,或者根本不包含語句。注意花括弧字元不需要附帶分號。

  所以,簡單的C#代碼塊如下所示:

{
<code line 1, statement 1>;
<code line 2, statement 2>
<code line 3, statement 2>;
}

  其中<code line x, statement y>部分並不是真正的C#代碼,而是用這個文本作為C#語句的預留位置。注意在這段代碼中,第2、3行代碼是同一個語句的一部分,因為在第2行的末尾沒有分號。

  在這個簡單的代碼塊中,還使用了縮排格式,使C#代碼的可讀性更高。這不是我的發明,而是一個標準規則,實際上在預設情況下VS會自動縮排代碼。一般情況下,每個代碼塊都有自己的縮排層級,即它向右縮排了多少。代碼塊可以互相嵌套(即塊中可以包含其他塊),而被嵌套的塊要縮排得多一些。

{
<code line 1>;
{
<code line 2>;
<code line 3>;
}
<code line 4>;
}

  前面代碼的續行通常也要縮排得多一些,如上面第一個樣本中的第3行代碼。

  注釋:

  在能通過Tools | Options訪問的VS Options對話方塊中,顯示了VS用于格式化代碼的規則。在Text Editor | C# | Formatting節點的子目錄下,包含了完整的格式化規則。此處的大多數設定都反映了還沒有講述的C#部分,但如果以後要修改設定,以更適合自己的個人化樣式,就可以回過頭來看看這些設定。在本書中,為了簡潔起見,所有的程式碼片段都使用預設設定來格式化。

  記住,這種樣式並不是強制的。但如果不使用它,讀者在閱讀本書時會很快陷入迷茫之中。

  在C#代碼中,另一個常見的語句是注釋。注釋並不是嚴格意義上的C#代碼,但代碼最好有注釋。注釋就是解釋,即給代碼添加描述性文本(用英語、法語、德語、外蒙古語等),編譯器會忽略這些內容。在開始處理比較長的程式碼片段時,注釋可用於給進行中的工作添加提示,例如“這行代碼要求使用者輸入一個數字”,或“這段代碼由Bob編寫”。C#添加註釋的方式有兩種。可以在注釋的開頭和結尾放置標記,也可以使用一個標記,其含義是“這行代碼的其餘部分是注釋”。在C#編譯器忽略斷行符號符的規則中,後者是一個例外,但這是一種特殊情況。

  要使用第一種方式標記注釋,可以在注釋的開頭加上“/*”,在末尾加上“*/”。這些注釋符號可以在單獨一行上,也可以在不同的行上,注釋符號之間的所有內容都是注釋。注釋中惟一不能輸入的是“*/”,因為它會被看作注釋結束標記。所以下面的語句是正確的。

/* This is a comment */
/* And so...
... is this! */

  但下面的語句會產生錯誤:

/* Comments often end with "*/" characters */

  注釋結束符號後的內容("*/"後面的字元)會被當作C#代碼,因此產生錯誤。

  另一個添加註釋的方法是用“//”開始一個注釋,其後可以編寫任何內容,只要這些內容在一行上即可。下面的語句是正確的:

// This is a different sort of comment.

  但下面的語句會失敗,因為第二行代碼會解釋為C#代碼:

// So is this,

but this bit isn't.

  這類注釋可用於語句的說明,因為它們都放在一行上:

<A statement>; // Explanation of statement

  前面說過有兩種方法給C#代碼添加註釋。但在C#中,還有第三類注釋,嚴格地說,這是//文法的擴充。它們都是單行注釋,用三個"/"符號來開頭,而不是兩個。

/// A special comment

  在正常情況下,編譯器會忽略它們,就像其他注釋一樣,但可以配置VS,在編譯項目時,提取這些注釋後面的文本,建立一個特殊格式的文字檔,該檔案可用於建立文檔說明書。具體內容見第28章。

  特別要注意的一點是,C#代碼是區分大小寫。與其他語言不同,必須使用正確的大小寫形式輸入代碼,因為簡單地用大寫字母代替小寫字母會中斷項目的編譯。

  如果讀者對C#語言沒有什麼瞭解,就很難理解這一點,看看下面這行代碼,它在第2章的第一個樣本中使用:

Console.WriteLine("The first app in Beginning C# Programming!");

  C#編譯器能理解這行代碼,因為Console.WriteLine()命令的大小寫形式是正確的。但是,下面的語句都不能工作:

console.WriteLine("The first app in Beginning C# Programming!");

CONSOLE.WRITELINE("The first app in Beginning C# Programming!");

Console.Writeline("The first app in Beginning C# Programming!");

  這裡使用的大小寫形式是錯誤的,所以C#編譯器不知道我們要做什麼。

  幸好,VS在代碼的輸入方面提供了許多協助,在大多數情況下,它都知道(程式也知道)我們要做什麼。在輸入代碼的過程中,VS會推薦使用者可能要使用的命令,並儘可能糾正大小寫問題。
 C#控制台應用程式的基本結構

  下面看看第2章的控制台應用程式樣本(ConsoleApplication1),研究一下它的結構。其代碼如下所示:

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// Output text to the screen.
Console.WriteLine("The first app in Beginning C# Programming!");
Console.ReadKey();
}
}
}

  可以立即看出,上一節討論的所有文法元素這裡都有。其中有分號、花括弧、注釋和適當的縮排。

  目前看來,代碼中最重要的部分如下所示:

static void Main(string[] args)
{
// Output text to the screen.
Console.WriteLine("The first app in Beginning C# Programming!");
Console.ReadKey();
}

  在運行控制台應用程式時,就運行這段代碼,更準確地說,是運行花括弧中的代碼塊。如前所述,注釋行不做任何事情,包含它們只為了簡潔而已。其他兩行代碼在控制台視窗中輸出了一些文本,並等待一個響應。但目前我們還不需要關心它的具體機制。

  這裡要注意一下如何?上一章介紹的代碼反白功能,雖然這對於Windows應用程式來說比較重要,但它是一個非常有用的特性。要實現該功能,需要使用#region和#endregion關鍵字,來定義可以擴充和收縮的代碼地區的開頭和結尾。例如,可以修改為ConsoleApplication1產生的程式碼,如下所示:

#region Using directives
using System;
using System.Collections.Generic;
using System.Text;
#endregion

  這樣就可以把這些程式碼收縮為一行,以後要查看其細節時,可以再次擴充它。這裡包含的using語句和其下的namespace語句在本章的後面解釋。

  注釋:

  以#開頭的任意關鍵字實際上都是一個預先處理指令,嚴格地說並不是C#關鍵字。除了這裡描述的#region和#endregion關鍵字之外,其他關鍵字都相當複雜,用法也比較專業。所以,這是一個讀者通讀全書後才能探究的主題。

  現在不必考慮樣本中的其他代碼,因為本書前幾章僅解釋C#的基本文法,至於應用程式進行Console.WriteLine()調用的具體方式,則不在我們的考慮之內。以後會闡述這些代碼的重要性。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.