private void TestAlias() { // this.textBox1 是一個文本框,類型為 System.Windows.Forms.TextBox // 設計中已經將其 Multiline 屬性設置為 true byte a = 1; char b = 'a'; short c = 1; int d = 2; long e = 3; uint f = 4; bool g = true; this.textBox1.Text = ""; this.textBox1.AppendText("byte -> " + a.GetType().FullName + "\n"); this.textBox1.AppendText("char -> " + b.GetType().FullName + "\n"); this.textBox1.AppendText("short -> " + c.GetType().FullName + "\n"); this.textBox1.AppendText("int -> " + d.GetType().FullName + "\n"); this.textBox1.AppendText("long -> " + e.GetType().FullName + "\n"); this.textBox1.AppendText("uint -> " + f.GetType().FullName + "\n"); this.textBox1.AppendText("bool -> " + g.GetType().FullName + "\n"); } 在窗體中新建一個按鈕,並在它的單擊事件中調用該 TestAlias() 函數,我們將看到運行結果如下:
byte -> System.Byte char -> System.Char short -> System.Int16 int -> System.Int32 long -> System.Int64 uint -> System.UInt32 bool -> System.Boolean
這足以說明各別名對應的類!
2. 數值類型之間的相互轉換
這裡所說的數值類型包括 byte, short, int, long, fload, double 等,根據這個排列順序,各種類型的值依次可以向後自動進行轉換。舉個例來說,把一個 short 型的數據賦值給一個 int 型的變量,short 值會自動行轉換成 int 型值,再賦給 int 型變量。如下例:
private void TestBasic() { byte a = 1; short b = a; int c = b; long d = c; float e = d; double f = e; this.textBox1.Text = ""; this.textBox1.AppendText("byte a = " + a.ToString() + "\n"); this.textBox1.AppendText("short b = " + b.ToString() + "\n"); this.textBox1.AppendText("int c = " + c.ToString() + "\n"); this.textBox1.AppendText("long d = " + d.ToString() + "\n"); this.textBox1.AppendText("float e = " + e.ToString() + "\n"); this.textBox1.AppendText("double f = " + f.ToString() + "\n"); } 譯順利通過,運行結果是各變量的值均為 1;當然,它們的類型分別還是 System.Byte 型……System.Double 型。現在我們來試試,如果把賦值的順序反過來會怎麼樣呢?在 TestBasic() 函數中追加如下語句:
int g = 1; short h = g; this.textBox1.AppendText("h = " + h.ToString() + "\n");
結果編譯報錯: G:\Projects\Visual C#\Convert\Form1.cs(118): 無法將類型“int”隱式轉換為“short” 其中,Form1.cs 的 118 行即 short h = g 所在行。
這個時候,如果我們堅持要進行轉換,就應該使用強制類型轉換,這在 C 語言中常有提及,就是使用“(類型名) 變量名”形式的語句來對數據進行強制轉換。如上例修改如下:
short g = 1; byte h = (byte) g; // 將 short 型的 g 的值強制轉換成 short 型後再賦給變量 h this.textBox1.AppendText("h = " + h.ToString() + "\n");