官术网_书友最值得收藏!

3.1 C#的基本語法

C#代碼的外觀和操作方式與C++和Java非常類似。初看起來,其語法可能比較混亂,不像某些語言那樣與書面英語十分接近。但實際上,在C#編程中,使用這種風格是很合理的,而且不用花太多力氣就可以編寫出便于閱讀的代碼。

與其他語言(如Python)的編譯器不同,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行的末尾沒有分號。縮進第3行代碼,就更容易確定這是第二行代碼的繼續。

下面的簡單示例還使用了縮進格式,提高了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,在編譯項目時,提取這些注釋后面的文本,創建一個特殊格式的文本文件,該文件可用于創建文檔。為了創建文檔,注釋必須遵循XML文檔的規則,詳見https://msdn.microsoft.com/library/aa288481.aspx。本書不討論這個主題,但這是很值得探討的內容,如果讀者有時間,建議學習掌握。

特別要注意的一點是,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會推薦用戶可能要使用的命令,并盡可能糾正大小寫問題。

主站蜘蛛池模板: 蒙自县| 炉霍县| 贞丰县| 班戈县| 绥宁县| 伊宁县| 启东市| 海南省| 阿克苏市| 兰考县| 广汉市| 尚志市| 彭泽县| 中江县| 茌平县| 汝阳县| 齐齐哈尔市| 巫溪县| 仁怀市| 竹溪县| 邯郸市| 富川| 喀什市| 灵川县| 许昌县| 宁国市| 杂多县| 资兴市| 灵璧县| 昌黎县| 十堰市| 江达县| 白城市| 成安县| 万安县| 略阳县| 徐汇区| 泸定县| 博野县| 梅河口市| 广丰县|