前回の学習で、値型と値型の変換、参照型と参照型の変換は基本的に実現できましたが、値型と参照型(オブジェクト)の変換はどのように実現するのでしょうか? ?
C# では、ボックス化を使用して値型を参照型に変換し、アンボックス化を使用して参照型を値型に変換します。つまり、任意の値型、参照型からオブジェクト型を実装できます。ボックス化とアンボックス化を使用すると、任意の型を実装できます。オブジェクト型と見なすことができます (オブジェクト型については、[参照型----オブジェクト クラス] をクリックして入力できます)
ボックス変換:
ここで、.NET ではデータ型が次のとおりであることを付け加えておきます。これに対応して、メモリ割り当ては 2 つの方法に分割され、1 つはスタック、もう 1 つはヒープ (マネージド ヒープ) です。値型は 2 つの方法にのみ割り当てられます。スタック。参照型はマネージド ヒープを使用してメモリを割り当てます。
例を書いてみましょう:
int i = 123; object o = i; //实现装箱操作,其实也是隐式转换。
ボックス化変換の概略図は次のとおりです:
ボックス化変換は本質的にはコピー型変換です。これは、ボックス化が完了した後、i の値 o を変更することを意味します。値は変更されません
ボックス分解変換:
ボックス分解変換は、オブジェクト型から値型への変換を指します。何よりも、このオブジェクト インスタンスが指定された値型パッキング値であるかどうかを確認し、このインスタンスの値を変数値型にコピーします。これは、 の逆のプロセスであることがわかります。ボックス化。オブジェクトを強制的に元の型に変換します。ボックス化解除値は、変換されるターゲットの変数と同じ型でなければならないことに注意してください。
ここで強調しておきたいのは、ボックス化とアンボックス化は、値型または参照型からオブジェクト型への変換、およびオブジェクト型から値型または参照型への変換であるということです
以上、C#学習日記18--。ボックス化変換とアンボックス化変換の内容については、PHP 中国語 Web サイト (www.php.cn) をご覧ください。