我目前正在研究 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");
}
}
}
}