在.Net 4.0以后的版本,提供了一個類,該類在 System.Diagnostics命名空間下,使用該類就可以計算出執行結果相同的兩端代碼的效率,在代碼優化上是很實用的。
泛型效率是高是低呢??我們來測試下,代碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
{
Console.WriteLine("\r\n");
System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
watch.Start();
for (int i = 0; i < 10000000; i++)
{
ShowObj(123);
}
Console.WriteLine("object方法執行毫秒數"+watch.ElapsedMilliseconds);
watch.Stop();
}
{
System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
watch.Start();
for (int i = 0; i < 10000000; i++)
{
ShowGeneric(123);
}
Console.WriteLine("泛型方法執行毫秒數"+watch.ElapsedMilliseconds);
watch.Stop();
}
Console.Read();
}
public static void ShowObj(object obj) {
string str = "123";
}
public static void ShowGeneric<T>(T t)
{
string str = "123";
}
}
}

經過上述執行,我們可以把我們程序框架里面的幫助類都改成泛型的。
這里簡要說下泛型的特點,C#泛型的幾個特點:
(1)如果實例化泛型類型的參數相同,那么JIT編譯器會重復使用該類型。
(2)C#的泛型類型可以應用於強大的反射技術。
(3)C#的性能高,我們知道ArrayList添加元素時都是object類型,如果添加一個值類型,就需要把它轉換為引用類型,當取出這個元素的時候又要將其轉換為值類型,這就需要裝箱和拆箱的操作,性能降低。而泛型無需類型的轉換操作。
(4)C#除可單獨聲明泛型類型(包括類與結構)外,也可在基類中包含泛型類型的聲明。但基類如果是泛型類,它的類型參數要么已實例化,要么來源子類(同樣是泛型類型)聲明的類型參數。
關於泛型特點的詳細解說:請看本人《自定義泛型那點事》
