程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 初探c#(六)統一系統類型

初探c#(六)統一系統類型

編輯:C#入門知識

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的時候決不會報錯的。呵呵,我發現我的翻譯總是越跑越遠,總是扣不住原文。篡改甚多,敬請原諒!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved