1. 程式人生 > >C#入門需要了解的基礎

C#入門需要了解的基礎

一 C#程式碼的基本格式

C#中編寫程式時,程式碼都必須放在一個類的內部,在定義類時需要用到class關鍵字,class關鍵字前面可以加一些訪問修飾符控制類的訪問許可權,定義類的具體語法格式如下。

[修飾符] class 類名
{
程式程式碼
}
在編寫C#程式碼時,除了要遵從語法格式外,還需要特別注意以下幾點。
1.C#中的程式程式碼可分為結構定義語句和功能執行語句,其中,結構定義語句用於宣告一個類或方法,功能執行語句用於實現具體的功能。每條功能執行語句的最後都必須用分號(;)結束,如下面的語句。
Console.WriteLine("這是第一個C#程式!");
值得注意的是,在程式中不要將英文的分號(;)誤寫成中文的分號(;),如果寫成中文的分號,編譯器會報錯。
2.C#語言是嚴格區分大小寫的。在定義類時,不能將class寫成Class,否則編譯會報錯。程式中定義一個computer的同時,還可以定義一個Computer。computer和Computer是兩個完全不同的符號,在使用時務必注意。
3.在編寫 C#程式碼時,為了便於閱讀,通常會使用一種良好的格式進行排版,但這並不是必須的,我們也可以在兩個單詞或符號之間任意換行,例如下面這段程式碼的編排方式也是可以的。
public class HelloWorld
{public static void Main(string [] args)
{Console.WriteLine("這是第一個C#程式!");}}
雖然C#沒有嚴格要求用什麼樣的格式來編排程式程式碼,但是考慮到程式碼的可讀性,應該讓自己編寫的程式程式碼整齊美觀、層次清晰,通常會使用下面這種形式。
public class HelloWorld
{
public static void Main(string[] args)
    {
         Console.WriteLine("這是第一個C#程式!");
    }

}

二 如何註釋

在編寫程式時,為了使程式碼易於閱讀,通常會在實現功能的同時為程式碼加一些註釋。註釋是對程式中某個功能或者某行程式碼的解釋、說明,在編譯程式時編譯器不會編譯這些註釋資訊。
C#中的註釋有3種類型,具體如下。
1.單行註釋
單行註釋通常用於對程式中的某一行程式碼進行解釋,用符號“//”表示,“//”後面為被註釋的內容,具體示例如下。
int c = 10; //定義一個整型變數
2.多行註釋
多行註釋就是註釋中的內容可以為多行,它以符號“/*”開頭,以符號“*/”結尾,具體示例如下。
/* int c = 10;
int x = 5; */
3.文件註釋
文件註釋用於對類或方法進行說明和描述。在類或方法前面連續輸入 3 個“/”,就會自動生成相應的文件註釋,使用者需要手動填寫類或方法的描述資訊,來完成文件註釋的內容。
腳下留心
在C#中,有的註釋可以巢狀使用,有的則不可以,下面列出兩種具體的情況。
(1)多行註釋“/*…*/”中可以巢狀單行註釋“//”,舉例如下。
/* int c = 10; //定義一個整型的c
int x = 5; */
(2)多行註釋“/*…*/”中不可以巢狀多行註釋“/*…*/”,舉例如下。
/*
/*int c = 10;*/
int x=5;
*/
上面的程式碼無法通過編譯,原因在於第一個“/*”會和第一個“*/”進行配對,而第二個“*/”則找不到匹配物件。

三 C#中的關鍵字

關鍵字是程式語言裡事先定義好並賦予了特殊含義的單詞,也稱作保留字。和其他語言一樣,C#中保留了許多關鍵字,例如class、public等,下面列舉的是C#中所有的關鍵字。
abstract as  base  bool  break byte  case
catch  char  checked class  const continue decimal
default delegate do  double else  enum  event
explicit extern false finally float for  foreach
goto  if  implicit in  int  interface internal
is   lock  long  namespace new  null  object
operator out  override params private protected public
readonly ref  return sbyte  sealed short  sizeof
stackalloc static string struct switch this  throw
true  try  typeof uint  ulong unchecked unsafe
ushort  using virtual void  volatile while
上面列舉的關鍵字中,每個關鍵字都有特殊的作用,例如 namespace 關鍵字用於宣告名稱空間,using 關鍵字用於引入名稱空間,class 關鍵字用於宣告一個類。在本教材後面的章節中將逐步對其他關鍵字進行講解,在此沒有必要對所有關鍵字進行記憶,只需要瞭解即可。
值得一提的是,在使用C#關鍵字時,需要注意以下兩點。
● 所有的關鍵字都是小寫的。
● 程式中的識別符號不能以關鍵字命名。

四  C#中的識別符號

在程式設計過程中,經常需要在程式中定義一些符號來標記一些名稱,如類名、方法名、引數名、變數名等,這些符號被稱為識別符號。識別符號可以由任意順序的大小寫字母、數字、下畫線(_)組成,但識別符號不能以數字開頭,且不能是C#中的關鍵字。
下面的這些識別符號都是合法的。
username
username123
user_name
_userName
注意,下面的這些識別符號都是不合法的。
123username  以數字開頭
class 這是關鍵字
98.3 數字開頭  
Hello World 出現了空格 

在C#程式中定義的識別符號必須要嚴格遵守上面的規範,否則程式在編譯時會報錯。除此之外,為了增強程式碼的可讀性,建議初學者在定義識別符號時還應該遵循以下規範。
1.類名、方法名和屬性名中的每個單詞的首字母要大寫。例如 ArrayList、LineNumber、Age。這種命名方式被稱為大駝峰命名法或帕斯卡(Pascal)命名法。
2.欄位名、變數名的首字母要小寫,之後的每個單詞的首字母均為大寫。例如age、userName。這種命名方式被稱為小駝峰命名法。
3.常量名中的所有字母都大寫,單詞之間用下畫線連線。例如DAY_OF_MONTH。
4.在程式中,應該儘量使用有意義的英文單詞來定義識別符號,使得程式便於閱讀。例如使用username表示使用者名稱,password表示密碼。

五 常量

常量就是在程式中固定不變的值,是不能改變的資料。例如數字1、字元'a'、浮點數3.2等。在C#中,常量包括整型常量、浮點數常量、布林常量、字元常量等。接下來對這些常量進行詳細講解。
1.整型常量
整型常量是整數型別的資料,有二進位制、八進位制、十進位制和十六進位制4種表示形式,具體如下。
● 二進位制:由數字0 和1 組成的數字序列,如01000000、10000001。
● 八進位制:以0開頭並且其後由0~7(包括0和7)的整陣列成的數字序列,如0342。
● 十進位制:由數字0~9(包括0和9)的整陣列成的數字序列,如198。
● 十六進位制:以0x或者0X開頭並且其後由0~9、A~F(包括0和9、A和F)組成的數字序列,如0x25AF。
需要注意的是,在程式中為了標明不同的進位制,資料都有特定的標識,八進位制必須以0開頭,如0711、0123;十六進位制必須以0x或0X開頭,如0xaf3、0Xff;整數以十進位制表示時,第一位不能是0,0本身除外。例如十進位制的127,用二進位制表示為01111111,用八進位制表示為0177,用十六進位制表示為0x7F或者0X7F。
2.浮點數常量
浮點數常量就是在數學中用到的小數,分為float單精度浮點數和double雙精度浮點數兩種型別。其中,單精度浮點數後面以F或f結尾,而雙精度浮點數則以D或d結尾。當然,在使用浮點數時也可以在結尾處不加任何的字尾,此時虛擬機器會預設為double雙精度浮點數。浮點數常量還可以通過指數形式來表示,具體示例如下。
2e3f 3.6d 0f 3.84d 5.022e+23f
上面列出的浮點數常量中用到了e和f,初學者可能會感到困惑,在後面的2.2.2小節中將會詳細介紹。
3.字元常量
字元常量用於表示一個字元,一個字元常量要用一對英文半形格式的單引號('')引起來,它可以是英文字母、數字、標點符號以及由轉義序列來表示的特殊字元。具體示例如下。
'a' '1' '&' '\r' '\u0000'
上面的示例中,'\u0000'表示一個空白字元,即在單引號之間只有一個表示空白的空格。之所以能這樣表示是因為C#採用的是Unicode字符集,Unicode字元以\u開頭,空格字元在Unicode碼錶中對應的值為'\u0000'。
4.字串常量
字串常量用於表示一串連續的字元,一個字串常量要用一對英文半形格式的雙引號("")引起來,具體示例如下。
"HelloWorld" "123" "Welcome \n XXX" ""
一個字串可以包含一個字元或多個字元,也可以不包含任何字元,即長度為零。
5.布林常量
布林常量即布林型的true和false兩個值,該常量用於區分一個事物的真與假。
6.null常量
null常量只有一個值null,表示物件的引用為空。關於null常量將會在第4章中詳細介紹。
多學一招:特殊字元——反斜槓(\)
在字元常量中,反斜槓(\)是一個特殊的字元,被稱為轉義字元,它的作用是用來轉義後面一個字元。轉義後的字元通常用於表示一個不可見的字元或具有特殊含義的字元,例如換行\n。下面列出一些常見的轉義字元。
● \r 表示回車,將游標定位到當前行的開頭,不會跳到下一行。
● \n 表示換行,換到下一行的開頭。
● \t 表示製表符,將游標移到下一個製表符的位置,就像在文件中用Tab鍵一樣。
● \b 表示退格符號,就像鍵盤上的Backspace鍵。
以下的字元都有特殊意義,無法直接表示,所以用斜槓加上另外一個字元來表示。
● \' 表示單引號字元,C#程式碼中單引號表示字元的開始和結束,如果直接寫單引號字元('),程式會認為前兩個是一對,會報錯,因此需要使用轉義(\')。
● \"表示雙引號字元,C#程式碼中雙引號表示字串的開始和結束,包含在字串中的雙引號需要轉義,比如"hesays,\"thank you\"."。
● \\ 表示反斜槓字元,由於在 C#程式碼中的\是轉義字元,因此需要表示字面意義上的\,就需要使用\\。

六 變數

變數:在程式執行期間,隨時可能產生一些臨時資料,應用程式會將這些資料儲存在一些記憶體單元中,每個記憶體單元都用一個識別符號來標識。這些記憶體單元我們稱之為變數,定義的識別符號就是變數名,記憶體單元中儲存的資料就是變數的值。
接下來通過具體的程式碼來學習變數的定義。
int x = 0,y;
y = x+3;
上面的程式碼中,第一行程式碼的作用是定義了兩個變數 x 和 y,也就相當於分配了兩塊記憶體單元,在定義變數的同時為變數x分配了一個初始值0,而變數y沒有分配初始值,變數x和y在記憶體中的狀態如圖所示。
第二行程式碼的作用是為變數賦值,在執行第二行程式碼時,程式首先取出變數 x 的值,與 3相加後,將結果賦值給變數y,此時變數x和y在記憶體中的狀態發生了變化,如圖所示。


圖x、y 變數在記憶體中的狀態
從圖以及上面的描述中不難發現,變數實際上就是一個臨時存放資料的地方。在程式中,可以將指定的資料存放到變數中,方便隨時取出來再次進行使用。變數對於一段程式的執行是至關重要的,初學者在後續的學習中會逐步地瞭解變數的作用。
2.2.2 變數的資料型別
C#是一門強型別的程式語言,它對變數的資料型別有嚴格的限定。在定義變數時必須宣告變數的型別,在為變數賦值時必須賦予和變數同一種類型的值,否則程式會報錯。
在C#中,變數的資料型別可分為兩大類,即值型別和引用型別。這兩大類又分為很多資料型別,具體如圖所示。

.

圖2-4 資料型別
下面針對圖 2-4 中所示的數值型、字元型和布林型進行詳細講解。對於值型別中的其他型別以及引用型別,由於比較複雜,在這裡講解初學者無法理解,因此放到後面的章節中再做講解。
1.整數型別變數
整數型別變數用來儲存整數數值,即沒有小數部分的值。在C#中,為了給不同取值範圍的整數合理地分配儲存空間,整數型別分為 4 種不同的型別:位元組型(byte)、短整型(short)、整型(int)和長整型(long),4種類型所佔儲存空間的大小以及取值範圍如表所示。


表中,列出了4種整數型別變數所佔的空間大小和取值範圍。其中,佔用空間指的是不同型別的變數分別佔用的記憶體大小,如一個int型別的變數會佔用4位元組大小的記憶體空間。取值範圍是變數儲存的值不能超出的範圍,如一個byte型別的變數儲存的值必須是-27~ 27-1的整數。

在為一個long型別的變數賦值時需要注意一點,所賦值的後面要加上一個字母“L”(或小寫“l”),說明賦值為long型別。如果賦的值未超出int型的取值範圍,則可以省略字母“L”(或小寫“l”)。具體示例如下。
long num = 2200000000L; //所賦的值超出了int型的取值範圍,後面必須加上字母L
long num = 198L;  //所賦的值未超出int型的取值範圍,後面可以加上字母L
long num = 198;  //所賦的值未超出int型的取值範圍,後面可以省略字母L
2.浮點數型別變數
浮點數型別變數用來儲存小數數值。在C#中,浮點數型別分為兩種:單精度浮點數(float)、雙精度浮點數(double),double型所表示的浮點數比float型更精確,兩種浮點數所佔儲存空間的大小以及取值範圍如表所示。


表中,列出了兩種浮點數型別變數所佔的空間大小和取值範圍。在取值範圍中,E 表示以10為底的指數,E後面的“+”號和“-”號代表正指數和負指數,例如1.4E-45表示1.4*10-45。
在C#中,一個小數會被預設為double型別的值,因此在為一個float型別的變數賦值時需要注意一點,所賦值的後面一定要加上字母“F”(或者小寫“f”),而為 double 型別的變數賦值時,可以在所賦值的後面加上字元“D”(或小寫“d”),也可以不加。具體示例如下。
float f = 123.4f;  //為一個float型別的變數賦值,後面必須加上字母f
double d1 = 100.1; //為一個double型別的變數賦值,後面可以省略字母d
double d2 = 199.3d; //為一個double型別的變數賦值,後面可以加上字母d
在程式中也可以為一個浮點數型別變數賦予一個整數數值,例如下面的寫法也是可以的。
float f = 100; //宣告一個float型別的變數並賦整數值
double d = 100; //宣告一個double型別的變數並賦整數值
3.字元型別變數
字元型別變數用於儲存一個單一字元,在C#中用char表示。C#中每個char型別的字元變數都會佔用2位元組。在給char 型別的變數賦值時,需要用一對英文半形格式的單引號(' ')把字元括起來,如'a'。
char c = 'a'; //為一個char型別的變數賦值字元'a'
4.布林型別變數
布林型別變數用來儲存布林值,在 C#中用 bool 表示,該型別的變數只有兩個值,即 true和false。具體示例如下。
bool flag = false; //宣告一個bool型別的變數,初始值為false
flag = true;  //改變flag變數的值為true