一、一個簡單的 C# 程序
本文將為學(xué)習(xí) C# 打基礎(chǔ),,所以我們先來看 C# 程序的樣子,,還有它的不同部分分別代表什么意思。
我們先從一個簡單程序開始,,逐個解釋它的各組成部分,,從 C# 程序的結(jié)構(gòu)到產(chǎn)生屏幕輸出程序的方法。
讓我們先觀察一個簡單的 C# 程序,。代碼包含在一個名稱為 SimpleProgram.cs 的文本文件里,。
using System;
namespace Simple
{
class Program // 聲明一個類
{
static void Main()
{
Console.WriteLine("Hi there!");
}
}
}
輸出
Hi there!
當(dāng)你閱讀它時,不用太擔(dān)心是否能夠理解所有的細節(jié),。
下表對代碼進行了逐行描述,。
行號 |
描述 |
行 1 |
告訴編譯器這個程序使用 System 命名空間中的類型 |
行 3 |
聲明一個新的命名空間,名稱為 Simple 新的命名空間從第 4 行的左大括號開始,,一直延伸到第 12 行與之對應(yīng)的右大括號 在這部分里聲明的任何類型都是該命名空間的成員 |
行 5 |
聲明一個新的類類型,,名稱為 Program 任何在第 6 行和第 11 行的兩個大括號中間聲明的成員都是組成這個類的成員 |
行 5 |
第 5 行包含兩個連續(xù)的斜杠,這兩個字符以及這一行中它們之后的所有內(nèi)容都會被編譯器忽略,。這叫做單行注釋 |
行 7 |
聲明一個名稱為 Main 的方法作為類 Program 的成員 在這個程序中,,Main 是 Program 類的唯一成員
Main 是一個特殊的函數(shù),編譯器用它作為程序的起始點 |
行 9 |
只包含一條單獨的,、簡單的語句,,這一行組成了 Main 的方法體 簡單語句以一個分號結(jié)束 這條語句使用命名空間 System 中的一個名稱為 Console 的類,將消息輸出到屏幕窗口 如果沒有第 1 行的 using 語句,,編譯器就不知道在哪里尋找類 Console |
補充說明
C# 程序由一個或多個類型聲明組成,。程序中的類型可以以任何順序聲明。在 SimpleProgram 中,,只聲明了 class 類型,。
命名空間是與某個名稱相關(guān)聯(lián)的組類型聲明。 SimpleProgram 使用了兩個命名空間,。它創(chuàng)建了一個名稱為 Simple 的新命名空間,,并在其中聲明了其類型(類 program ),還使用了 System 命名空間中定義的 Console 類。
要編譯這個程序,,可以使用 Visual Studio 或命令行編譯器,。如果使用命令行編譯器,,最簡單的形式是在命名窗口使用下面的命令:
csc SimpleProgram.cs
在這條命念中,,csc 是命令行編澤器的名稱,SimpleProgram.cs 是源文件的名稱,。csc 是指“C-sharp 編譯器”,。
二,、標(biāo)識符
標(biāo)識符是一種字符串,,用來命名變量、方法,、參數(shù)和許多后面將要闡述的其他程序結(jié)構(gòu),。
可以通過把有意義的詞連接成一個單獨的描述性名稱來創(chuàng)建自文檔化(self-documenting)的標(biāo)識符,可以使用大寫和小寫字母(如 CardDeck,、PlayersHand,、FirstName 和 SocialSecurityNum)。某些字符能否在標(biāo)識符中特定的位置出現(xiàn)是有規(guī)定的,。
- 字母和下劃線(a-z,、A-Z 和 _)可以用在任何位置。
- 數(shù)字不能放在首位,,但可以放在其他的任何地方,。
@ 字符只能放在標(biāo)識符的首位。雖然允許使用,,但不推薦將 @ 作為常用字符,。
標(biāo)識符區(qū)分大小寫。例如,,變量名 myVar 和 MyVar 是不同的標(biāo)識符,。
舉個例子,在下面的代碼片段中,,變量的聲明都是有效的,,并聲明了不同的整型變量。但使用如此相似的名稱會使代碼更易出錯并更難調(diào)試,,后續(xù)調(diào)試代碼的人會很不爽,。
// 語法上有效,但非?;靵y
int totalCycleCount;
int TotalCycleCount;
int TotalcycleCount;
三、關(guān)鍵字
關(guān)鍵字是預(yù)定義的保留標(biāo)識符,對編譯器有特殊意義,。下表列出了完整的 C# 關(guān)鍵字表,。
關(guān)于關(guān)鍵字,一些應(yīng)該知道的重要內(nèi)容如下,。
- 關(guān)鍵字不能被用作變量名或任何其他形式的標(biāo)識符,,除非以
@ 字符開始。例如,,@if 是有效標(biāo)識符,,而 if 則不是,因為 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)鍵字是僅在特定的語言結(jié)構(gòu)中充當(dāng)關(guān)鍵字的標(biāo)識符。在那些位置,,它們有特別的含義,。兩者的區(qū)別是,關(guān)鍵字不能被用作標(biāo)識符,,而上下文關(guān)鍵字可以在代碼的其他部分被用作標(biāo)識符,。上下文關(guān)鍵字如下表所示。
|
add |
async |
descending |
from |
group |
let |
orderby |
remove |
unmanaged(泛型類型約束) |
when(篩選條件) |
yield |
四,、Main:程序的起始點
每個 C# 程序必須有一個類帶有 Main 方法(函數(shù))。在先前所示的 SimpleProgram 程序中,,它被聲明在 Program 類中,。
- 每個 C# 程序的可執(zhí)行起始點在 Main 中的第一條指令。
Main 必須首字母大寫,。
Main 的最簡單形式如下:
static void Main()
{
// 更多語句
}
五、空白
程序中的空白指的是沒有可視化輸出的字符,。程序員在源代碼中使用的空白將被編譯器忽略,,但它會使代碼更清晰易讀??瞻鬃址ǎ?/p>
- 空格(Space)
- 制表符(Tab)
- 換行符
- 回車符
例如,,下面的代碼會被編譯器相同對待,盡管它們看起來有所不同,。
// 很好的格式
static void Main()
{
Console.WriteLine("Hi there!");
}
// 連在一起
static void Main(){Console.WriteLine("Hi there!");}
六、語句
C# 的語句和 C,、C++ 的語句非常相似,。本節(jié)將介紹語句的常用形式,,詳細的語句形式將在后面的文章中介紹。
語句是描述個類型或告訴程序去執(zhí)行某個動作的一條源代碼指令,。
簡單語句以一個分號結(jié)束,。例如,下面的代碼是一個由兩條簡單語句組成的序列,。第一條語句定義了一個名為 var1 的整型變量,,并將它的值初始化為 5 。第二條語句將變量 var1 的值打印到屏幕窗口,。
int var1 = 5;
System.Console.Writeline("The value of var1 is {0}", var1);
塊
塊是一個由成對大括號包圍的 0 條或多條語可序列,,它在語法上相當(dāng)于一條語句,。
可以使用之前示例中的兩條語向創(chuàng)建一個塊,。用大括號把語向包圍起來,如下面的代碼所示,。
{
int var1 = 5;
System.Console.Writeline("The value of var1 is {0}", var1);
}
關(guān)于塊,,一些應(yīng)該知道的重要內(nèi)容如下。
- 語法上只需要一條語句,,而你需要執(zhí)行的動作無法用條簡單的語句表達的情況下,,考慮使用塊。
- 有些特定的程序結(jié)構(gòu)只能使用塊,。在這些結(jié)構(gòu)中,,不能用簡單語句替代塊。
- 雖然簡單語句以分號結(jié)束,,但塊后面不跟分號,。(實際上,由于被解析為一條空語句,,所以編譯器允許這樣,,但這不是好的風(fēng)格。)
{
int var1 = 5; // 以分號結(jié)束
System.Console.Writeline("The value of var1 is {0}", var1); // 以分號結(jié)束
} // 沒有分號
七,、從程序中輸出文本
控制臺窗口是一種簡單的命令提示窗口,允許程序顯示文本并從鍵盤接受輸人,。BCL 提供一個名為 Console 的類(在 System 命名空間中),,該類包含了將數(shù)據(jù)輸入和輸出到控制臺窗口的方法。
7.1 Write
Write 是 Console 類的成員,,它把一個文本字符串發(fā)送到程序的控制臺窗口,。最簡單的情況下,Write 將文本的字符串字面量發(fā)送到窗口,,字符串必須使用雙引號括起來,。
下面這行代碼展示了一個使用 Write 成員的示例:
Console.Write("This is trivial text.");
這段代碼在控制臺窗口產(chǎn)生如下輸出:
This is trivial text.
另外一個示例是下面的代碼,,它發(fā)送了 3 個文本字符串到程序的控制臺窗口:
Console.Write("This is text1. ");
Console.Write("This is text2. ");
Console.Write("This is text3. ");
這段代碼產(chǎn)生的輸出如下,注意,,Write 沒有在字符串后面添加換行符,,所以三條語句都是輸出到同一行。
This is text1. This is text2. This is text3.
7.2 WriteLine
WriteLine 是 Console 的另外一個成員,,它和 Write 實現(xiàn)相同的功能,,但是會在每個輸出的字符串的結(jié)尾添加一個換行符。
例如,,如果使用先前的代碼,,用 WriteLine 替換掉 Write ,輸出就會分為多行:
Console.WriteLine("This is text1. ");
Console.WriteLine("This is text2. ");
Console.WriteLine("This is text3. ");
這個簡單的例子演示了 BCL 的價值,,其中包含了你可以在程序中使用的各種功能,。
這段代碼在控制臺窗口產(chǎn)生如下輸出:
This is text1.
This is text2.
This is text3.
7.3 格式字符串
Write 語句和 WriteLine 語句的常規(guī)形式中可以有一個以上的參數(shù)。
- 如果不止一個參數(shù),,參數(shù)間用逗號分隔,。
- 第一個參數(shù)必須總是字符串,稱為格式字符串,。格式字符串可以包含替代標(biāo)記,。
- 替代標(biāo)記在格式字符串中標(biāo)出位置,在輸出串中該位置將用一個值來替代,。
- 替代標(biāo)記由一個整數(shù)及括住它的一對大括號組成,,其中整數(shù)就是替換值的數(shù)字位置。跟著格式字符串的參數(shù)稱為替換值,,這些替換值從 0 開始編號,。
語法如下:
Console.WriteLine(格式字符串(含替代標(biāo)記),替換值 0,,替換值 1,,替換值 2,……);
例如,,下面的語句有兩個替代標(biāo)記,,編號 0 和 1;以及兩個替換值,,分別是 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 引入了一種允許你以更簡單易懂的方式表述參數(shù)化字符串的語法,稱為字符串插值,,它是通過直接在替代標(biāo)記內(nèi)插人變量名實現(xiàn)的,。實際上,替代標(biā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ù)雜的例子中,,字符串插值的價值會更明顯:
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ù)雜的情況下,,使用變量的方式會更加自然,。
7.4 多重標(biāo)記和值
在 C# 中,可以使用任意數(shù)量的替代標(biāo)記和任意數(shù)量的值,。
- 值可以以任何順序使用,。
- 值可以在格式字符串中替換任意次。
例如,,下面的語句使用了 3 個標(biāo)記但只有兩個值,。請注意,值 1 被用在了值 0 之前,,而且被用了兩次,。
Console.WriteLine("Three integers are {1}, {0} and {1}.",3,6);
輸出
Three integers are 6, 3 and 6.
標(biāo)記不能試圖引用超出替換值列表長度以外位置的值。如果引用了,,不會產(chǎn)生編譯錯誤,,但會產(chǎn)生運行時錯誤(稱為異常),。
例如,,在下面的語句中有兩個替換值,分別在位置 0 和位置 1,。然而,,第二個標(biāo)記引用了位置 2,但位置 2 并不存在,。這將會產(chǎn)生一個運行時錯誤,。
Console.WriteLine("Two integers are {0} and {2}.",3,6); // 錯誤
7.5 格式化數(shù)字字符串
貫穿本系列博文的示例代碼將會使用 WriteLine 方法來顯示值。每次,,我們都使用由大括號包圍整數(shù)組成的簡單替代標(biāo)記形式,。
然而在很多時候,我們更希望以更合適的格式而不是一個簡單的數(shù)字來呈現(xiàn)文本字符串的輸出,。例如,,把值作為貨幣或者某個小數(shù)位數(shù)的定點值來顯示。這些都可以通過格式化字符串來實現(xiàn),。
例如,,下面的代碼由兩條打印值 500 的語句組成。第一行沒有使用任何其他格式化來打印數(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}.");
兩條語句的不同之處在于,,格式項以格式說明符形式包括了額外的信息,。大括號內(nèi)的格式說明符的語法由 3 個字段組成:索引號、對齊說明符和格式字段(format field),。語法如下所示:
{index(索引號,,必須,指定列表中的某一項),alignment(對齊說明符,,可選,,指定字段寬度,以及是否是右對齊或左對齊):format(格式字段,,可選,,指定項的格式)}
注意標(biāo)點符號的區(qū)別:
格式說明符的第一項是索引號或字符串插值變量。如你所知,,索引指定了之后的格式化字符串應(yīng)該格式化列表中的哪一項,。除非指定了字符串插值變量,否則索引號是必需的,,并且列表
項的數(shù)字必須從 0 開始,。
-
對齊說明符
對齊說明符表示字段中字符的最小寬度。對齊說明符有如下特性:
- 對齊說明符是可選的,,并且使用逗號來和索引號分離,。
- 它由一個正整數(shù)或負整數(shù)組成:
- 整數(shù)表示字段使用字符的最少數(shù)量。
- 符號表示右對齊或左對齊,。正數(shù)表示右對齊,,負數(shù)表示左對齊。
Console.WriteLine("{0,10}",500);
例如,,如下格式化 int 型變量 myInt 的值的代碼顯示了兩個格式項,。在第一個示例中,myInt 的值以在 10 個字符寬度的字符串中右對齊的形式進行顯示,;第二個示例中則是左對齊,。格式項放在兩個豎杠中間,這樣在輸出中就能看到它們的左右邊界,。
int myInt = 500;
Console.WriteLine("|{0,10}|",myInt);
Console.WriteLine("|{0,-10}|",myInt);
這段代碼產(chǎn)生了如下的輸出,,在兩個豎杠的中間有 10 個字符寬度:
| 500|
|500 |
使用字符串插值,下面的代碼跟之前的示例產(chǎn)生相同的結(jié)果:
int myInt = 500;
Console.WriteLine($"|{myInt,10}|");
Console.WriteLine($"|{myInt,-10}|");
值的實際表示可能會比對齊說明符指定的字符數(shù)多一些或少一些:
- 如果要表示的字符數(shù)比對齊說明符中指定的字符數(shù)少,,那么其余的字符會使用空格填充,;
- 如果要表示的字符數(shù)多于指定的字符數(shù),對齊說明符會被忽略,,并且使用所需的字符進行表示,。
Console.WriteLine("|{0,-20}|","其余字符會使用空格填充");
Console.WriteLine("|{0,-2}|","對齊說明符會被忽略,并且用實際的字符進行表示");
Console.WriteLine("|{0,-10}|","使用空格填充");
Console.WriteLine("|{0,18}|","使用空格填充");
輸出
|其余字符會使用空格填充 |
|對齊說明符會被忽略,,并且用實際的字符進行表示|
|使用空格填充 |
| 使用空格填充|
-
格式字段
格式字段指定了數(shù)字應(yīng)該以哪種形式表示,。例如,,應(yīng)該表示為貨幣、十進制數(shù)字,、十六進制數(shù)字還是定點符號,?
格式字段有三部分,如下圖所示,。
- 冒號后必須緊跟著格式說明符,,中間不能有空格。
- 格式說明符是一個字母字符,,是 9 個內(nèi)置格式之一,。字符可以是大寫或小寫形式。
- 精度說明符是可選的,,由 1~2 位數(shù)字組成,。它的實際意義取決于格式說明符。
如下代碼是格式字符串組件語法的一個示例:
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
如以下代碼所示,,使用字符串插值會產(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");
-
標(biāo)準(zhǔn)數(shù)字格式說明符
下表總結(jié)了 9 總標(biāo)準(zhǔn)數(shù)字格式說明符,。第一列在說明符名后列出了說明符字符。如果說明符字符根據(jù)它們的大小寫會有不同的輸出,,就會標(biāo)注為區(qū)分大小寫,。
名字和字符 |
意義 |
貨幣 C、c |
使用貨幣符號把值格式化為貨幣,,貨幣符號取決于程序所在的 PC 的區(qū)域設(shè)置 精度說明符:小數(shù)位數(shù) 示例:Console.WriteLine("{0:C}",12.5); 輸出:$12.50 |
十進制數(shù) D,、d |
十進制數(shù)字字符串,需要的情況下有負數(shù)符號,。只能和整數(shù)類型配合使用 精度說明符:輸出字符串中的最少位數(shù)。如果實際數(shù)字的位數(shù)更少,,則在左邊以 0 填充 示例:Console.WriteLine("{0:D4}",12); 輸出:0012 |
定點 F,、f |
帶有小數(shù)點的十進制數(shù)字字符串。如果需要也可以有負數(shù)符號 精度說明符:小數(shù)的位數(shù) 示例:Console.WriteLine("{0:F4}",12.3456789); 輸出:12.3457 |
常規(guī) G,、g |
在沒有指定說明符的情況下,,會根據(jù)值轉(zhuǎn)換為定點或科學(xué)計數(shù)法表示的緊湊形式 精度說明符:根據(jù)值 示例:Console.WriteLine("{0,G4}",12.345678); 輸出:12.35 |
十六進制數(shù) X、x 區(qū)分大小寫 |
十六進制數(shù)字的字符串,。十六進制數(shù)字 A~F 會匹配說明符的大小寫形式 精度說明符:輸出字符串中的最少位數(shù),。如果實際數(shù)的位數(shù)更少,則左邊以 0 填充 示例:Console.WriteLine("{0:x}",180026); 輸出:2bf3a |
數(shù)字 N,、n |
和定點表示法相似,,但是在每三個數(shù)字的一組中間有逗號或空格分隔符。從小數(shù)點開始往左數(shù),。使用逗號還是空格分隔符取決于程序所在 PC 的區(qū)域設(shè)置 精度說明符:小數(shù)的位數(shù) 示例:Console.WriteLine("{0:N2}",12345678.54321); 輸出:12,345,678.54 |
百分比 P,、p |
表示百分比的字符串,。數(shù)字會乘以 100 精度說明符:小數(shù)的位數(shù) 示例:Console.WriteLine("{0:P2}",0.1221897); 輸出:12.22 % |
往返過程 R、r |
保證輸出字符串后如果使用 Parse 方法將字符串轉(zhuǎn)化為數(shù)字,,那么該值和原始值一樣,。 精度說明符:忽略 示例:Console.WriteLine("{0:R}",1234.21897); 輸出:1234.21897 |
科學(xué)計數(shù)法 E、e 區(qū)分大小寫 |
具有和位數(shù)和指數(shù)的科學(xué)計數(shù)法,。指數(shù)前面加字母 E,。E 的大小寫和說明符一致 精度說明符:小數(shù)的位數(shù) 示例:Console.WriteLine("{0:e4}",12.3456789); 輸出:1.2346e+001 |
對齊說明符和格式說明符在字符串插值中仍然可用。
double var1 = 3.14159;
System.Console.WriteLine($"The value of var1 is {var1,10:f5}");
八,、注釋
你已經(jīng)見過單行注釋了,所以這里將討論第二種行內(nèi)注釋——帶分隔符的注釋,,并提及第三種類型,,稱為文檔注釋。
- 帶分隔符的注釋有兩個字符的開始標(biāo)記(/*)和兩個字符的結(jié)束標(biāo)記(*/),。
- 標(biāo)記對之間的文本會被編譯器忽略,。
- 帶分隔符的注釋可以跨任意多行。
例如,,下面的代碼展示了一個跨多行的帶分隔符的注釋,。
/*
這段文本將被編譯器忽略
帶分隔符的注釋與單行注釋不同
帶分隔符的注釋可以跨越多行
*/
帶分隔符的注釋還可以只包括行的一部分。例如,,下面的語句展示了行中間注釋出的文本,。該結(jié)果就是只聲明了一個變量 var2 。
int /*var 1,*/ var2;
8.1 關(guān)于注釋的更多內(nèi)容
關(guān)于注釋,,有其他幾點重要內(nèi)容需要知道,。
- 不能嵌套帶分隔符的注釋,一次只能有一個注釋起作用,。如果你打算嵌套注釋,,首先開始的注釋直到它的范圍結(jié)束都有效。
- 注釋類型的范圍如下,。
- 對于單行注釋,,一直到行結(jié)束都有效。
- 對于帶分隔符的注釋,,直至遇到第一個結(jié)束分隔符都有效,。
下面的注釋方式是不正確的:
↓ 創(chuàng)建注釋
/* 嘗試嵌套注釋
/* ← 它將被忽略,因為他在一個注釋的內(nèi)部
內(nèi)部注釋
*/ ← 注釋結(jié)束,,因為他是遇到的第一個借宿分隔符
*/ ← 產(chǎn)生語法錯誤,,因為沒有開始分隔符
↓ 創(chuàng)建注釋 ↓ 它將被忽略,因為他在一個注釋的內(nèi)部
// 單行注釋 /* 嵌套注釋?
*/ ← 產(chǎn)生語法錯誤,,因為沒有開始分隔符
8.2 文檔注釋
C# 還提供了第三種注釋類型:文檔注釋,。文檔注釋包含 XML 文本,可以用于產(chǎn)生程序文檔,。這種類型的注釋看起來像單行注釋,,但它們有三個斜杠而不是兩個。
下面的代碼展示了文檔注釋的形式:
/// <summary>
/// This class does...
/// <summary>
class Program
{
...
}
8.3 注釋類型總結(jié)
行內(nèi)注釋是被編譯器忽略但被包含在代碼中以說明代碼的文本片段,。程序員在他們的代碼中插人注釋以解釋和文檔化代碼,。下表總結(jié)了注釋的類型。
類型 |
開始,、結(jié)束 |
描述 |
單行注釋 |
// |
從開始標(biāo)記到該行行尾的文本被編譯器忽略 |
帶分隔符的注釋 |
/* */ |
從開始標(biāo)記到結(jié)束標(biāo)記之間的文本被編譯器忽略 |
文檔注釋 |
/// |
這種類型的注釋包含 XML 文本,,可以使用工具生成程序文檔 |
雖然用來重復(fù)變量名或者方法名的注解基本沒什么價值,但是用來解釋一段代碼的目的的注釋對后續(xù)的維護還是很有用的,。因為有價值的代碼不可避免地都需要維護,,所以通過閱讀開發(fā)者寫這段代碼時的想法可以節(jié)省很多精力。
原文鏈接:學(xué)習(xí) C# 從 Hello World 開始入門吧(語法基礎(chǔ))
(完)
|