-3

C# をしばらく使用していて、次のように考えていました。

public static void Main(Strings[] args){
    ...
    Person p = new Person("Bob",23,"Male");
    List<Object> al = new List<Object>();
    al.Add(p);
    Person p = (Person)al[0];
}

Collection でのボックス化とボックス化解除の典型的な例ですが、問題は、変数をボックス化するときに、CLR が GC ヒープに余分なスペースを割り当て、p をオブジェクトとして扱いますが、Person クラスは System.Object よりも「大きい」ことです。

それによると、 Person クラスがさらに所有するいくつかの値を失う可能性があり、ボックス化解除後に一部のデータを取得できません。

CLRはどのようにそれを解決しますか?

どんな解決策も歓迎します

4

2 に答える 2