日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

學(xué)習(xí) C# 從 Hello World 開始吧

 行者花雕 2021-03-14

一、一個(gè)簡(jiǎn)單的 C# 程序

本文將為學(xué)習(xí) C# 打基礎(chǔ),所以我們先來(lái)看 C# 程序的樣子,還有它的不同部分分別代表什么意思。

我們先從一個(gè)簡(jiǎn)單程序開始,逐個(gè)解釋它的各組成部分,從 C# 程序的結(jié)構(gòu)到產(chǎn)生屏幕輸出程序的方法。

讓我們先觀察一個(gè)簡(jiǎn)單的 C# 程序。代碼包含在一個(gè)名稱為 SimpleProgram.cs 的文本文件里。

using System;

namespace Simple
{
  class Program                 // 聲明一個(gè)類
  {
    static void Main()
    {
      Console.WriteLine("Hi there!");
    }
  }
}

輸出

Hi there!

當(dāng)你閱讀它時(shí),不用太擔(dān)心是否能夠理解所有的細(xì)節(jié)。

下表對(duì)代碼進(jìn)行了逐行描述。

行號(hào) 描述
行 1 告訴編譯器這個(gè)程序使用 System 命名空間中的類型
行 3 聲明一個(gè)新的命名空間,名稱為 Simple
新的命名空間從第 4 行的左大括號(hào)開始,一直延伸到第 12 行與之對(duì)應(yīng)的右大括號(hào)
在這部分里聲明的任何類型都是該命名空間的成員
行 5 聲明一個(gè)新的類類型,名稱為 Program
任何在第 6 行和第 11 行的兩個(gè)大括號(hào)中間聲明的成員都是組成這個(gè)類的成員
行 5 第 5 行包含兩個(gè)連續(xù)的斜杠,這兩個(gè)字符以及這一行中它們之后的所有內(nèi)容都會(huì)被編譯器忽略。這叫做單行注釋
行 7 聲明一個(gè)名稱為 Main 的方法作為類 Program 的成員
在這個(gè)程序中,MainProgram 類的唯一成員
Main 是一個(gè)特殊的函數(shù),編譯器用它作為程序的起始點(diǎn)
行 9 只包含一條單獨(dú)的、簡(jiǎn)單的語(yǔ)句,這一行組成了 Main 的方法體
簡(jiǎn)單語(yǔ)句以一個(gè)分號(hào)結(jié)束
這條語(yǔ)句使用命名空間 System 中的一個(gè)名稱為 Console 的類,將消息輸出到屏幕窗口
如果沒有第 1 行的 using 語(yǔ)句,編譯器就不知道在哪里尋找類 Console

補(bǔ)充說(shuō)明

C# 程序由一個(gè)或多個(gè)類型聲明組成。程序中的類型可以以任何順序聲明。在 SimpleProgram 中,只聲明了 class 類型。

命名空間是與某個(gè)名稱相關(guān)聯(lián)的組類型聲明。 SimpleProgram 使用了兩個(gè)命名空間。它創(chuàng)建了一個(gè)名稱為 Simple 的新命名空間,并在其中聲明了其類型(類 program),還使用了 System 命名空間中定義的 Console 類。

要編譯這個(gè)程序,可以使用 Visual Studio 或命令行編譯器。如果使用命令行編譯器,最簡(jiǎn)單的形式是在命名窗口使用下面的命令:

csc SimpleProgram.cs

在這條命念中,csc 是命令行編澤器的名稱,SimpleProgram.cs 是源文件的名稱。csc 是指“C-sharp 編譯器”。

二、標(biāo)識(shí)符

標(biāo)識(shí)符是一種字符串,用來(lái)命名變量、方法、參數(shù)和許多后面將要闡述的其他程序結(jié)構(gòu)。

可以通過(guò)把有意義的詞連接成一個(gè)單獨(dú)的描述性名稱來(lái)創(chuàng)建自文檔化(self-documenting)的標(biāo)識(shí)符,可以使用大寫和小寫字母(如 CardDeck、PlayersHand、FirstName 和 SocialSecurityNum)。某些字符能否在標(biāo)識(shí)符中特定的位置出現(xiàn)是有規(guī)定的。

  • 字母和下劃線(a-z、A-Z 和 _)可以用在任何位置。
  • 數(shù)字不能放在首位,但可以放在其他的任何地方。
  • @ 字符只能放在標(biāo)識(shí)符的首位。雖然允許使用,但不推薦將 @ 作為常用字符。

標(biāo)識(shí)符區(qū)分大小寫。例如,變量名 myVarMyVar 是不同的標(biāo)識(shí)符。

舉個(gè)例子,在下面的代碼片段中,變量的聲明都是有效的,并聲明了不同的整型變量。但使用如此相似的名稱會(huì)使代碼更易出錯(cuò)并更難調(diào)試,后續(xù)調(diào)試代碼的人會(huì)很不爽。

// 語(yǔ)法上有效,但非?;靵y
int totalCycleCount;
int TotalCycleCount;
int TotalcycleCount;

三、關(guān)鍵字

關(guān)鍵字是預(yù)定義的保留標(biāo)識(shí)符,對(duì)編譯器有特殊意義。下表列出了完整的 C# 關(guān)鍵字表。

關(guān)于關(guān)鍵字,一些應(yīng)該知道的重要內(nèi)容如下。

  • 關(guān)鍵字不能被用作變量名或任何其他形式的標(biāo)識(shí)符,除非以 @ 字符開始。例如,@if 是有效標(biāo)識(shí)符,而 if 則不是,因?yàn)?if 是關(guān)鍵字。
  • 所有 C# 關(guān)鍵字全部都由小寫字母組成(但是 .NET 類型名使用 Pascal 大小寫約定)。
abstract as
break byte
char checked
continue decimal
do double
event explicit
finally fixed
foreach goto
in int
is lock
new null
out override
protected public
return sbyte
sizeof stackalloc
struct switch
true try
ulong unchecked
using virtual
while

上下文關(guān)鍵字是僅在特定的語(yǔ)言結(jié)構(gòu)中充當(dāng)關(guān)鍵字的標(biāo)識(shí)符。在那些位置,它們有特別的含義。兩者的區(qū)別是,關(guān)鍵字不能被用作標(biāo)識(shí)符,而上下文關(guān)鍵字可以在代碼的其他部分被用作標(biāo)識(shí)符。上下文關(guān)鍵字如下表所示。

add
async
descending
from
group
let
orderby
remove
unmanaged(泛型類型約束)
when(篩選條件)
yield

四、Main:程序的起始點(diǎn)

每個(gè) C# 程序必須有一個(gè)類帶有 Main 方法(函數(shù))。在先前所示的 SimpleProgram 程序中,它被聲明在 Program 類中。

  • 每個(gè) C# 程序的可執(zhí)行起始點(diǎn)在 Main 中的第一條指令。
  • Main 必須首字母大寫。

Main 的最簡(jiǎn)單形式如下:

static void Main()
{
    // 更多語(yǔ)句
}

五、空白

程序中的空白指的是沒有可視化輸出的字符。程序員在源代碼中使用的空白將被編譯器忽略,但它會(huì)使代碼更清晰易讀??瞻鬃址ǎ?/p>

  • 空格(Space)
  • 制表符(Tab)
  • 換行符
  • 回車符

例如,下面的代碼會(huì)被編譯器相同對(duì)待,盡管它們看起來(lái)有所不同。

// 很好的格式
static void Main()
{
    Console.WriteLine("Hi there!");
}

// 連在一起
static void Main(){Console.WriteLine("Hi there!");}

六、語(yǔ)句

C# 的語(yǔ)句和 C、C++ 的語(yǔ)句非常相似。本節(jié)將介紹語(yǔ)句的常用形式,詳細(xì)的語(yǔ)句形式將在后面的文章中介紹。

語(yǔ)句是描述個(gè)類型或告訴程序去執(zhí)行某個(gè)動(dòng)作的一條源代碼指令。

簡(jiǎn)單語(yǔ)句以一個(gè)分號(hào)結(jié)束。例如,下面的代碼是一個(gè)由兩條簡(jiǎn)單語(yǔ)句組成的序列。第一條語(yǔ)句定義了一個(gè)名為 var1 的整型變量,并將它的值初始化為 5。第二條語(yǔ)句將變量 var1 的值打印到屏幕窗口。

int var1 = 5;
System.Console.Writeline("The value of var1 is {0}", var1);

塊是一個(gè)由成對(duì)大括號(hào)包圍的 0 條或多條語(yǔ)可序列,它在語(yǔ)法上相當(dāng)于一條語(yǔ)句。

可以使用之前示例中的兩條語(yǔ)向創(chuàng)建一個(gè)塊。用大括號(hào)把語(yǔ)向包圍起來(lái),如下面的代碼所示。

{
    int var1 = 5;
    System.Console.Writeline("The value of var1 is {0}", var1);
}

關(guān)于塊,一些應(yīng)該知道的重要內(nèi)容如下。

  • 語(yǔ)法上只需要一條語(yǔ)句,而你需要執(zhí)行的動(dòng)作無(wú)法用條簡(jiǎn)單的語(yǔ)句表達(dá)的情況下,考慮使用塊。
  • 有些特定的程序結(jié)構(gòu)只能使用塊。在這些結(jié)構(gòu)中,不能用簡(jiǎn)單語(yǔ)句替代塊。
  • 雖然簡(jiǎn)單語(yǔ)句以分號(hào)結(jié)束,但塊后面不跟分號(hào)。(實(shí)際上,由于被解析為一條空語(yǔ)句,所以編譯器允許這樣,但這不是好的風(fēng)格。)
{
    int var1 = 5; // 以分號(hào)結(jié)束
    System.Console.Writeline("The value of var1 is {0}", var1); // 以分號(hào)結(jié)束
} // 沒有分號(hào)

七、從程序中輸出文本

控制臺(tái)窗口是一種簡(jiǎn)單的命令提示窗口,允許程序顯示文本并從鍵盤接受輸人。BCL 提供一個(gè)名為 Console 的類(在 System 命名空間中),該類包含了將數(shù)據(jù)輸入和輸出到控制臺(tái)窗口的方法。

7.1 Write

WriteConsole 類的成員,它把一個(gè)文本字符串發(fā)送到程序的控制臺(tái)窗口。最簡(jiǎn)單的情況下,Write 將文本的字符串字面量發(fā)送到窗口,字符串必須使用雙引號(hào)括起來(lái)。

下面這行代碼展示了一個(gè)使用 Write 成員的示例:

Console.Write("This is trivial text.");

這段代碼在控制臺(tái)窗口產(chǎn)生如下輸出:

This is trivial text.

另外一個(gè)示例是下面的代碼,它發(fā)送了 3 個(gè)文本字符串到程序的控制臺(tái)窗口:

Console.Write("This is text1. ");
Console.Write("This is text2. ");
Console.Write("This is text3. ");

這段代碼產(chǎn)生的輸出如下,注意,Write 沒有在字符串后面添加換行符,所以三條語(yǔ)句都是輸出到同一行。

This is text1. This is text2. This is text3. 

7.2 WriteLine

WriteLineConsole 的另外一個(gè)成員,它和 Write 實(shí)現(xiàn)相同的功能,但是會(huì)在每個(gè)輸出的字符串的結(jié)尾添加一個(gè)換行符。

例如,如果使用先前的代碼,用 WriteLine 替換掉 Write,輸出就會(huì)分為多行:

Console.WriteLine("This is text1. ");
Console.WriteLine("This is text2. ");
Console.WriteLine("This is text3. ");

這個(gè)簡(jiǎn)單的例子演示了 BCL 的價(jià)值,其中包含了你可以在程序中使用的各種功能。

這段代碼在控制臺(tái)窗口產(chǎn)生如下輸出:

This is text1. 
This is text2. 
This is text3. 

7.3 格式字符串

Write 語(yǔ)句和 WriteLine 語(yǔ)句的常規(guī)形式中可以有一個(gè)以上的參數(shù)。

  • 如果不止一個(gè)參數(shù),參數(shù)間用逗號(hào)分隔。
  • 第一個(gè)參數(shù)必須總是字符串,稱為格式字符串。格式字符串可以包含替代標(biāo)記
    • 替代標(biāo)記在格式字符串中標(biāo)出位置,在輸出串中該位置將用一個(gè)值來(lái)替代。
    • 替代標(biāo)記由一個(gè)整數(shù)及括住它的一對(duì)大括號(hào)組成,其中整數(shù)就是替換值的數(shù)字位置。跟著格式字符串的參數(shù)稱為替換值,這些替換值從 0 開始編號(hào)。

語(yǔ)法如下:

Console.WriteLine(格式字符串(含替代標(biāo)記),替換值 0,替換值 1,替換值 2,……);

例如,下面的語(yǔ)句有兩個(gè)替代標(biāo)記,編號(hào) 0 和 1;以及兩個(gè)替換值,分別是 3 和 6。

Console.WriteLine("Two sample integers are {0} and {1}.",3,6);

這段代碼在屏幕上產(chǎn)生如下輸出:

Two sample integers are 3 and 6.

C# 6.0 引入了一種允許你以更簡(jiǎn)單易懂的方式表述參數(shù)化字符串的語(yǔ)法,稱為字符串插值,它是通過(guò)直接在替代標(biāo)記內(nèi)插人變量名實(shí)現(xiàn)的。實(shí)際上,替代標(biāo)記告訴編譯器這個(gè)變量名將被視為一個(gè)變量,而不是字符串字面量——前提是在字符串前面加上了 $ 符號(hào)。

int var1 = 3;
int var2 = 6;
Console.WriteLine($"Two sample integers are {var1} and {var2}.")

上面的代碼產(chǎn)生如下輸出:

Two sample integers are 3 and 6.

在更復(fù)雜的例子中,字符串插值的價(jià)值會(huì)更明顯:

int latitude = 43;
int longitude = 11;
string north = "N";
string south = "S";
string east = "E";

Console.WriteLine($"The city of Florence, Italy is located at latitude {latitude}{north} and longitude {longitude}{east}. By comparison, the city of Djibouti (in the country of Djibouti) is located at latitude {longitude}{north} and longitude {latitude}{east}. The city of Moroni in the Comoros Islands is located at latitude {longitude}{south} and longitude {latitude}{east}.");

輸出

The city of Florence, Italy is located at latitude 43N and longitude 11E. By comparison, the city of Djibouti (in the country of Djibouti) is located at latitude 11N and longitude 43E. The city of Moroni in the Comoros Islands is located at latitude 11S and longitude 43E.

可以看到,在復(fù)雜的情況下,使用變量的方式會(huì)更加自然。

7.4 多重標(biāo)記和值

在 C# 中,可以使用任意數(shù)量的替代標(biāo)記和任意數(shù)量的值。

  • 值可以以任何順序使用。
  • 值可以在格式字符串中替換任意次。

例如,下面的語(yǔ)句使用了 3 個(gè)標(biāo)記但只有兩個(gè)值。請(qǐng)注意,值 1 被用在了值 0 之前,而且被用了兩次。

Console.WriteLine("Three integers are {1}, {0} and {1}.",3,6);

輸出

Three integers are 6, 3 and 6.

標(biāo)記不能試圖引用超出替換值列表長(zhǎng)度以外位置的值。如果引用了,不會(huì)產(chǎn)生編譯錯(cuò)誤,但會(huì)產(chǎn)生運(yùn)行時(shí)錯(cuò)誤(稱為異常)。

例如,在下面的語(yǔ)句中有兩個(gè)替換值,分別在位置 0 和位置 1。然而,第二個(gè)標(biāo)記引用了位置 2,但位置 2 并不存在。這將會(huì)產(chǎn)生一個(gè)運(yùn)行時(shí)錯(cuò)誤。

Console.WriteLine("Two integers are {0} and {2}.",3,6); // 錯(cuò)誤

7.5 格式化數(shù)字字符串

貫穿本系列博文的示例代碼將會(huì)使用 WriteLine 方法來(lái)顯示值。每次,我們都使用由大括號(hào)包圍整數(shù)組成的簡(jiǎn)單替代標(biāo)記形式。

然而在很多時(shí)候,我們更希望以更合適的格式而不是一個(gè)簡(jiǎn)單的數(shù)字來(lái)呈現(xiàn)文本字符串的輸出。例如,把值作為貨幣或者某個(gè)小數(shù)位數(shù)的定點(diǎn)值來(lái)顯示。這些都可以通過(guò)格式化字符串來(lái)實(shí)現(xiàn)。

例如,下面的代碼由兩條打印值 500 的語(yǔ)句組成。第一行沒有使用任何其他格式化來(lái)打印數(shù)字,而第二行的格式化字符串指定了數(shù)字應(yīng)該被格式化成貨幣。

Console.WriteLine("The value:{0}.",500);   // 輸出數(shù)字
Console.WriteLine("The value:{0:C}.",500); // 格式化為貨幣格式

輸出

The value:500.
The value:$500.00.

使用字符串插值,下面的代碼產(chǎn)生的結(jié)果跟之前的示例相同。

int myInt = 500;
Console.WriteLine($"The value:{myInt}.");
Console.WriteLine($"The value:{myInt:C}.");

兩條語(yǔ)句的不同之處在于,格式項(xiàng)以格式說(shuō)明符形式包括了額外的信息。大括號(hào)內(nèi)的格式說(shuō)明符的語(yǔ)法由 3 個(gè)字段組成:索引號(hào)、對(duì)齊說(shuō)明符和格式字段(format field)。語(yǔ)法如下所示:

{index(索引號(hào),必須,指定列表中的某一項(xiàng)),alignment(對(duì)齊說(shuō)明符,可選,指定字段寬度,以及是否是右對(duì)齊或左對(duì)齊):format(格式字段,可選,指定項(xiàng)的格式)}

注意標(biāo)點(diǎn)符號(hào)的區(qū)別:

  • 對(duì)齊使用逗號(hào)
  • 格式使用冒號(hào)

格式說(shuō)明符的第一項(xiàng)是索引號(hào)或字符串插值變量。如你所知,索引指定了之后的格式化字符串應(yīng)該格式化列表中的哪一項(xiàng)。除非指定了字符串插值變量,否則索引號(hào)是必需的,并且列表
項(xiàng)的數(shù)字必須從 0 開始。

  1. 對(duì)齊說(shuō)明符

    對(duì)齊說(shuō)明符表示字段中字符的最小寬度。對(duì)齊說(shuō)明符有如下特性:

    • 對(duì)齊說(shuō)明符是可選的,并且使用逗號(hào)來(lái)和索引號(hào)分離。
    • 它由一個(gè)正整數(shù)或負(fù)整數(shù)組成:
      • 整數(shù)表示字段使用字符的最少數(shù)量。
      • 符號(hào)表示右對(duì)齊或左對(duì)齊。正數(shù)表示右對(duì)齊,負(fù)數(shù)表示左對(duì)齊。
    Console.WriteLine("{0,10}",500);
    

    例如,如下格式化 int 型變量 myInt 的值的代碼顯示了兩個(gè)格式項(xiàng)。在第一個(gè)示例中,myInt 的值以在 10 個(gè)字符寬度的字符串中右對(duì)齊的形式進(jìn)行顯示;第二個(gè)示例中則是左對(duì)齊。格式項(xiàng)放在兩個(gè)豎杠中間,這樣在輸出中就能看到它們的左右邊界。

      int myInt = 500;
      Console.WriteLine("|{0,10}|",myInt);
      Console.WriteLine("|{0,-10}|",myInt);
    

    這段代碼產(chǎn)生了如下的輸出,在兩個(gè)豎杠的中間有 10 個(gè)字符寬度:

    |       500|
    |500       |
    

    使用字符串插值,下面的代碼跟之前的示例產(chǎn)生相同的結(jié)果:

    int myInt = 500;
    Console.WriteLine($"|{myInt,10}|");
    Console.WriteLine($"|{myInt,-10}|");
    

    值的實(shí)際表示可能會(huì)比對(duì)齊說(shuō)明符指定的字符數(shù)多一些或少一些:

    • 如果要表示的字符數(shù)比對(duì)齊說(shuō)明符中指定的字符數(shù)少,那么其余的字符會(huì)使用空格填充;
    • 如果要表示的字符數(shù)多于指定的字符數(shù),對(duì)齊說(shuō)明符會(huì)被忽略,并且使用所需的字符進(jìn)行表示。
    Console.WriteLine("|{0,-20}|","其余字符會(huì)使用空格填充");
    Console.WriteLine("|{0,-2}|","對(duì)齊說(shuō)明符會(huì)被忽略,并且用實(shí)際的字符進(jìn)行表示");
    
    Console.WriteLine("|{0,-10}|","使用空格填充");
    Console.WriteLine("|{0,18}|","使用空格填充");
    

    輸出

    |其余字符會(huì)使用空格填充         |
    |對(duì)齊說(shuō)明符會(huì)被忽略,并且用實(shí)際的字符進(jìn)行表示|
    |使用空格填充    |
    |            使用空格填充|
    
  2. 格式字段

    格式字段指定了數(shù)字應(yīng)該以哪種形式表示。例如,應(yīng)該表示為貨幣、十進(jìn)制數(shù)字、十六進(jìn)制數(shù)字還是定點(diǎn)符號(hào)?

    格式字段有三部分,如下圖所示。

    • 冒號(hào)后必須緊跟著格式說(shuō)明符,中間不能有空格。
    • 格式說(shuō)明符是一個(gè)字母字符,是 9 個(gè)內(nèi)置格式之一。字符可以是大寫或小寫形式。
    • 精度說(shuō)明符是可選的,由 1~2 位數(shù)字組成。它的實(shí)際意義取決于格式說(shuō)明符。

    如下代碼是格式字符串組件語(yǔ)法的一個(gè)示例:

    Console.WriteLine("{0:F4}",12.345678);
    

    如下代碼給出了不同格式字符串的一些示例:

    double myDouble = 12.345678;
    Console.WriteLine("{0, -10:G} -- General",myDouble);
    Console.WriteLine("{0,-10} -- Default, same as General",myDouble);
    Console.WriteLine("{0,-10:F4} -- Fixed Point, 4 dec places" ,myDouble);
    Console.WriteLine("{0, -10:C} -- Currency",myDouble);
    Console.WriteLine("{0,-10:E3} -- Sci. Notation, 3 dec places", myDouble);
    Console.WriteLine("{0,-10:x} -- Hexadec imal integer",1194719 ) ;
    

    這段代碼產(chǎn)生了如下的輸出:

    12.345678  -- General
    12.345678  -- Default, same as General
    12.3457    -- Fixed Point, 4 dec places
    ¤12.35     -- Currency
    1.235E+001 -- Sci. Notation, 3 dec places
    123adf     -- Hexadec imal integer
    

    如以下代碼所示,使用字符串插值會(huì)產(chǎn)生跟之前的示例相同的結(jié)果:

    double myDouble = 12.345678;
    Console.WriteLine($"{myDouble, 10:G} -- General");
    Console.WriteLine($"{myDouble,-10} -- Default,same as General");
    Console.WriteLine($"{myDouble, -10:F4} -- Fixed Point, 4 dec places");
    Console.WriteLine($"{myDouble,-10:C} -- Currency");
    Console.WriteLine($"{myDouble,-10:E3} -- Sci. Notation, 3 dec places");
    Console.WriteLine($"{1194719,- 10:x} -- Hexadec imal integer");
    
  3. 標(biāo)準(zhǔn)數(shù)字格式說(shuō)明符

    下表總結(jié)了 9 總標(biāo)準(zhǔn)數(shù)字格式說(shuō)明符。第一列在說(shuō)明符名后列出了說(shuō)明符字符。如果說(shuō)明符字符根據(jù)它們的大小寫會(huì)有不同的輸出,就會(huì)標(biāo)注為區(qū)分大小寫。

    名字和字符 意義
    貨幣
    C、c
    使用貨幣符號(hào)把值格式化為貨幣,貨幣符號(hào)取決于程序所在的 PC 的區(qū)域設(shè)置
    精度說(shuō)明符:小數(shù)位數(shù)
    示例:Console.WriteLine("{0:C}",12.5);
    輸出:$12.50
    十進(jìn)制數(shù)
    D、d
    十進(jìn)制數(shù)字字符串,需要的情況下有負(fù)數(shù)符號(hào)。只能和整數(shù)類型配合使用
    精度說(shuō)明符:輸出字符串中的最少位數(shù)。如果實(shí)際數(shù)字的位數(shù)更少,則在左邊以 0 填充
    示例:Console.WriteLine("{0:D4}",12);
    輸出:0012
    定點(diǎn)
    F、f
    帶有小數(shù)點(diǎn)的十進(jìn)制數(shù)字字符串。如果需要也可以有負(fù)數(shù)符號(hào)
    精度說(shuō)明符:小數(shù)的位數(shù)
    示例:Console.WriteLine("{0:F4}",12.3456789);
    輸出:12.3457
    常規(guī)
    G、g
    在沒有指定說(shuō)明符的情況下,會(huì)根據(jù)值轉(zhuǎn)換為定點(diǎn)或科學(xué)計(jì)數(shù)法表示的緊湊形式
    精度說(shuō)明符:根據(jù)值
    示例:Console.WriteLine("{0,G4}",12.345678);
    輸出:12.35
    十六進(jìn)制數(shù)
    X、x
    區(qū)分大小寫
    十六進(jìn)制數(shù)字的字符串。十六進(jìn)制數(shù)字 A~F 會(huì)匹配說(shuō)明符的大小寫形式
    精度說(shuō)明符:輸出字符串中的最少位數(shù)。如果實(shí)際數(shù)的位數(shù)更少,則左邊以 0 填充
    示例:Console.WriteLine("{0:x}",180026);
    輸出:2bf3a
    數(shù)字
    N、n
    和定點(diǎn)表示法相似,但是在每三個(gè)數(shù)字的一組中間有逗號(hào)或空格分隔符。從小數(shù)點(diǎn)開始往左數(shù)。使用逗號(hào)還是空格分隔符取決于程序所在 PC 的區(qū)域設(shè)置
    精度說(shuō)明符:小數(shù)的位數(shù)
    示例:Console.WriteLine("{0:N2}",12345678.54321);
    輸出:12,345,678.54
    百分比
    P、p
    表示百分比的字符串。數(shù)字會(huì)乘以 100
    精度說(shuō)明符:小數(shù)的位數(shù)
    示例:Console.WriteLine("{0:P2}",0.1221897);
    輸出:12.22 %
    往返過(guò)程
    R、r
    保證輸出字符串后如果使用 Parse 方法將字符串轉(zhuǎn)化為數(shù)字,那么該值和原始值一樣。
    精度說(shuō)明符:忽略
    示例:Console.WriteLine("{0:R}",1234.21897);
    輸出:1234.21897
    科學(xué)計(jì)數(shù)法
    E、e
    區(qū)分大小寫
    具有和位數(shù)和指數(shù)的科學(xué)計(jì)數(shù)法。指數(shù)前面加字母 E。E 的大小寫和說(shuō)明符一致
    精度說(shuō)明符:小數(shù)的位數(shù)
    示例:Console.WriteLine("{0:e4}",12.3456789);
    輸出:1.2346e+001

    對(duì)齊說(shuō)明符和格式說(shuō)明符在字符串插值中仍然可用。

    double var1 = 3.14159;
    System.Console.WriteLine($"The value of var1 is {var1,10:f5}");
    

八、注釋

你已經(jīng)見過(guò)單行注釋了,所以這里將討論第二種行內(nèi)注釋——帶分隔符的注釋,并提及第三種類型,稱為文檔注釋

  • 帶分隔符的注釋有兩個(gè)字符的開始標(biāo)記(/*)和兩個(gè)字符的結(jié)束標(biāo)記(*/)。
  • 標(biāo)記對(duì)之間的文本會(huì)被編譯器忽略。
  • 帶分隔符的注釋可以跨任意多行。

例如,下面的代碼展示了一個(gè)跨多行的帶分隔符的注釋。

/*
  這段文本將被編譯器忽略
  帶分隔符的注釋與單行注釋不同
  帶分隔符的注釋可以跨越多行
*/

帶分隔符的注釋還可以只包括行的一部分。例如,下面的語(yǔ)句展示了行中間注釋出的文本。該結(jié)果就是只聲明了一個(gè)變量 var2。

int /*var 1,*/ var2;

8.1 關(guān)于注釋的更多內(nèi)容

關(guān)于注釋,有其他幾點(diǎn)重要內(nèi)容需要知道。

  • 不能嵌套帶分隔符的注釋,一次只能有一個(gè)注釋起作用。如果你打算嵌套注釋,首先開始的注釋直到它的范圍結(jié)束都有效。
  • 注釋類型的范圍如下。
    • 對(duì)于單行注釋,一直到行結(jié)束都有效。
    • 對(duì)于帶分隔符的注釋,直至遇到第一個(gè)結(jié)束分隔符都有效。

下面的注釋方式是不正確的:

↓ 創(chuàng)建注釋
/* 嘗試嵌套注釋
    /* ← 它將被忽略,因?yàn)樗谝粋€(gè)注釋的內(nèi)部
      內(nèi)部注釋
    */ ← 注釋結(jié)束,因?yàn)樗怯龅降牡谝粋€(gè)借宿分隔符
*/ ← 產(chǎn)生語(yǔ)法錯(cuò)誤,因?yàn)闆]有開始分隔符


↓ 創(chuàng)建注釋      ↓ 它將被忽略,因?yàn)樗谝粋€(gè)注釋的內(nèi)部
// 單行注釋     /* 嵌套注釋?
          */ ← 產(chǎn)生語(yǔ)法錯(cuò)誤,因?yàn)闆]有開始分隔符

8.2 文檔注釋

C# 還提供了第三種注釋類型:文檔注釋。文檔注釋包含 XML 文本,可以用于產(chǎn)生程序文檔。這種類型的注釋看起來(lái)像單行注釋,但它們有三個(gè)斜杠而不是兩個(gè)。

下面的代碼展示了文檔注釋的形式:

/// <summary>
/// This class does...
/// <summary>
class Program
{
  ...
}

8.3 注釋類型總結(jié)

行內(nèi)注釋是被編譯器忽略但被包含在代碼中以說(shuō)明代碼的文本片段。程序員在他們的代碼中插人注釋以解釋和文檔化代碼。下表總結(jié)了注釋的類型。

類型 開始、結(jié)束 描述
單行注釋 // 從開始標(biāo)記到該行行尾的文本被編譯器忽略
帶分隔符的注釋 /* */ 從開始標(biāo)記到結(jié)束標(biāo)記之間的文本被編譯器忽略
文檔注釋 /// 這種類型的注釋包含 XML 文本,可以使用工具生成程序文檔

雖然用來(lái)重復(fù)變量名或者方法名的注解基本沒什么價(jià)值,但是用來(lái)解釋一段代碼的目的的注釋對(duì)后續(xù)的維護(hù)還是很有用的。因?yàn)橛袃r(jià)值的代碼不可避免地都需要維護(hù),所以通過(guò)閱讀開發(fā)者寫這段代碼時(shí)的想法可以節(jié)省很多精力。

原文鏈接:學(xué)習(xí) C# 從 Hello World 開始入門吧(語(yǔ)法基礎(chǔ))

(完)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多