私は現在、C# Generics を調べていますが、いくつか質問があります。
1) 次のコードでは、「テスト」で 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");
}
}
}
}