.NET 値型をobject型に入れるとパフォーマンスが下がる
C#やVB.NETで関数を定義する際、引数の型をobjectにするとほぼすべての型を受け入れることができます。
一見便利ですが、intやdouble、構造体を入れるとパフォーマンスが低下する可能性があります。これはボックス化(boxing)と呼ばれます。
ボックス化とボックス化解除 - C# | Microsoft Learn
void SomeMethod(object value)
{
// 何らかの処理
}
// ボックス化
SomeMethod(1);
これらは具体的な型を指定したり、ジェネリックを活用することで回避できます。
void GenericMethod<T>(T value)
{
// 何らかの処理
}
// ボックス化しない
SomeMethod(1);
パフォーマンスが重要な場面では特に注意したいですね。
