實值型別 - char 與逸散字元(Escaped character)

char 型別本身代表一個 Unicode 16 位元的字元,範圍從 0~65535 ,相較於標準 ASCII字元集的 0~127 ,char可以妥善的處理非拉丁語系的複雜字元集,你可以使用 char 型別處理其他如亞洲國家所使用的字元集,這些字元集通常相當的龐大, 16 位元的 char 字元型別很適合用來解決這一方面的問題。

字元的使用必須以單引號將其包圍,例如 'a' 是一個標準的字元,你可以將其指定給宣告為 char 型態的字元變數,例如以下的這一行程式碼,其中將字元 a 指定給char型別變數 theChar。
char theChar = 'a' ; 
由於char代表一種 Unicode 字元,因此除了英文字母與數字,其他文字同樣可以被當作char作處理,而且 char 被歸納為整數型別,除了直接指定字元之外,其本身亦能以十六進位、甚至 Unicode 表示法來設定一個字元,例如以下這一段程式碼:
char theChar1 = 'a' ;   //英文字母
char theChar2 = '文' ;  //中文
char theChar3 = '\x0058' ;  //十六進位表示式
char theChar4 = '\u0058' ; //Unicode表示式
除了標準字元,在某些特殊的狀況下,你可能想要將一些特定的字元輸出,而這些字元又剛好代表著特別的意義,例如上式所使用的單引號,遇到這種情形可以透過逸散字元(Escaped character)處理,避免編譯器將其當作特殊符號解譯。

逸散字元使用一個反斜線 \ 標示特定的 Unicode 字元,例如 \n 代表一個斷行符號,若是要將單引號輸出,可以使用這樣的語法:
char testChar = '\'' ;
第一個以及第三個單引號用來標識單一字元,而 \' 這個符號使用一個反斜線將其右邊緊接的單引號標示為一般字元,當程式執行這一行程式碼的時候,編譯器並不會去處理這單引號字元,只是將其當作一般的字元作輸出。

下表列舉數個常見的逸散字元。

逸散字元說明
\a代表鬧鐘(警示) \u0007。
\b一個退格鍵 \u0008。
\t水平的tab定位鍵 \u0009。
\r換行字元 \u000D。
\v一個垂直的tab定位鍵 \u000B。
\f一個換頁 \u000C。
\n個換行 \u000A。

以下的範例程式碼嘗試輸出表列的數個逸散字元。
class Program
{
    static void Main(string[] args)
    {
        char theChar1 = 'a' ;
        char theChar2 = '文';
        char theChar3 = '\x0059';
        char theChar4 = '\u0058';
        char theChar5 = '\n';
        char theChar6 = '\'';
        //
        Console.WriteLine(theChar1);
        Console.WriteLine(theChar2);
        Console.WriteLine(theChar3);
        Console.WriteLine(theChar4);
        Console.WriteLine(theChar5);
        Console.WriteLine(theChar6);
        //
        Console.ReadLine();
    }
}
一開始宣告了 6 個 char 型別變數,並且分別初始化為各種字元,接下來則逐一將這些字元的內容輸出。
a
文
Y
X


'
無論是單純的英文字母、中文,或是以十六進位表示的字元值,甚至逸散字元,都可以被儲存至 char 型別變數作輸出。

布林型別 (bool)

最後這裏介紹另外一個比較特別的布林型別,這個型別單純的用來表示 true/false 的值,一個宣告為 bool 型別的變數,只能指定為 true 或是 false ,你不可以將其他的數值指定至宣告為 bool 型別的變數,例如 0 或是 1 。

布林是一種非常特殊的型別,它無法與其他基礎型別的值相容,若是指定給 bool 型別的變數值不是 true 或 false ,此時編譯器回傳一個型別不相容的錯誤例,如以下的程式碼:
bool x = 89 ; 
布林型別的作用非常單純,它存在最主要的目的,是提供 true 或是 false 的是否判斷,尤其在迴圈或是 if 敘述句, bool 型別的使用非常頻繁,討論流程控制語法時會有更進一步的運用示範。




沒有留言: