1.6 統一系統類型(Type system unification)
c#獨創了一種類型——統一系統類型(為了這個累刑,我頭疼死了。誰有更好的名字,請務必告訴我)。總之,所有的其他類型,包括值和引用,都可以被當作統一系統類型來對待。從概念上說,所有的類型都從它派生。這樣,其他的類型就可以使用統一系統類型的屬性和方法。包括一些“簡單”類型,如:int。還是給個例子吧:
*/
using System;
class Test
{
static void Main() {
Console.WriteLine(3.ToString());
}
}
/*
“3.ToString()”調用了object的“ToString()”方法。相信學過c/c++的朋友都知道要輸出一個數字有多麻煩,現在就省事了。再看一個:*/
class Test
{
static void Main() {
int i = 123;
object o = i; // boxing
int j = (int) o; // unboxing
}
}
/*
這個像帽子戲法的例子中,從“int”轉換成“object”,又轉換回來。這樣一來,在值和引用之間就架起了一座橋梁。
這樣有什麼用呢。即興舉一個常見的例子...就min把。在c/c++中:*/
// c/c++ code
void min(int i, int j)
{
return ((i < j) ? i : j);
}
/* 如果比較的不是int,或者說可能是int,也可能是float、double呢?可以這樣:*/
template
T min (T i, T j)
{
return ((i < j) ? i : j)
}
/* 用c#可以:*/
void swap (object a, object b)
{
return ((i < j) ? i : j);
}
/*
我想大家一定看出來第二個例子要比較一個int和一個float的話,還需要一些轉換,而第三個例子就可以比較所有的變量!這個靈活度簡直太大了。所以,我私以為,大家使用時一定要小心!
它在比較一個int和一個class的時候決不會報錯的。呵呵,我發現我的翻譯總是越跑越遠,總是扣不住原文。篡改甚多,敬請原諒!