.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);

パフォーマンスが重要な場面では特に注意したいですね。


インプラス株式会社

このブログの人気の投稿

技術メモ「503 Service Unavailable」

googleドライブの同期は、フォルダ選択ができました。

グーグルグループのメーリングリストの返信先が個人になってしまう