C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 54 を表示中)
■30605 / )  参照型の等値演算子でboxingを回避したい
□投稿者/ ほにゃ (1回)-(2008/12/27(Sat) 22:15:35)

分類:[C#] 

こんばんは。
以下のようなコードがあります。

interface IHoge { }
class HogeClass { }
static class Test
{
    public static bool Test1(HogeClass x, HogeClass y) { return x == y; }
    public static bool Test2(IHoge x, IHoge y) { return x == y; }
    public static bool Test3<T>(T x, T y) where T : HogeClass { return x == y; }
    public static bool Test4<T>(T x, T y) where T : class, IHoge { return x == y; }
}

上記のコードをビルドしてMSILコードを確認すると

Test1 boxingは発生しない
Test2 boxingは発生しない
Test3 boxingが発生する
Test4 boxingが発生する

となるようなのです。
Test3やTest4でboxingが発生するのはなぜなのでしょうか?
Test3やTest4の場合でboxingを回避する方法はないでしょうか?



返信 編集キー/


管理者用

- Child Tree -