我目前正在研究C#泛型,我有幾個問題。在泛型中的動態類型
1)在下面的代碼中,「Test」中T的類型比較會減慢程序的運行速度嗎?在其他語言中,這是在編譯時處理的,但我不瞭解C#。
2)由於sizeof顯然不會工作,我不得不使用System.Runtime.InteropServices.Marshal.SizeOf。它是否正確? 3)我還沒有在C#中看到類似這樣的代碼,但是有什麼不對嗎,或者我在這裏做的事情是完全正確的嗎?最後,這個例子中的方法會帶來一些類型,如果它無法處理它,則拋出異常。一些類型將被獨立處理,其他像short/int/long一起被處理,這取決於它們的大小。
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Test<int>();
Test<long>();
Test<string>();
Console.ReadLine();
}
static void Test<T>()
{
Type type = typeof(T);
if (type == typeof(int) || type == typeof(long))
{
Console.WriteLine("int");
Console.WriteLine(System.Runtime.InteropServices.Marshal.SizeOf(type).ToString());
}
else if (type == typeof(string))
{
Console.WriteLine("string");
}
}
}
}
1)你可以用計時器運行它並檢查。 2)你有沒有試過sizeof?這對我來說可以。 3)你擁有它的方式很好(只要在例外的末尾添加最後一個elseif)。雖然我會用switch()來做。與C++不同,switch語句可以比較多的int /枚舉。 – 2012-04-13 23:49:57