「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > C#ボクシングとボクシング:いつ、なぜそれらが必要なのですか?

C#ボクシングとボクシング:いつ、なぜそれらが必要なのですか?

2025-01-29に公開
ブラウズ:234

C# Boxing and Unboxing: When and Why Do We Need Them?

c#のインストールとボクシング:理由とアプリケーションシナリオ

導入

C#では、荷重とボクシングは、調整された値と参照タイプのさまざまな動作に必要なメカニズムです。ただし、それらの目的とユースケースはプログラマーを混乱させる可能性があります。このガイドは、これらの概念が重要である理由を明確にし、実用的なアプリケーションの例を提供します。

ボクシングとボクシングの重要性

インカフとボクシングにより、C#が unified型システム

を維持できるようにするため、値タイプと参照タイプが一貫して相互作用および処理されるようにします。値タイプ(ShortやIntなど)は、データを変数に直接保存します。代わりに、参照型はメモリ内の他の位置の基礎となるオブジェクトを参照します。

これらの異なるデータ構造間のシームレスな相互作用を促進するために、ボックスには、参照タイプのように扱うことができる値タイプデータを含むパッケージオブジェクトを作成します。これにより、参照タイプ用に設計されたデータ構造の操作値のタイプを簡単に保存および操作できます。

ボクシングとボクシングのアプリケーションシナリオ

梱包のための古典的なユースケースはによって残されます。これはオブジェクトのみを受け入れます。これらのセットは、ArrayListの例に示すように、値タイプを保存するために梱包する必要があります:

short s = 25; オブジェクトobjshort = s; //パッキング 現代

short s = 25;
object objshort = s;  // 装箱
double e = 2.718281828459045; int ee =(int)e;

同じ性質の比較:参照タイプは、デフォルトで参照にデフォルトである。下位値を比較するには、解体して明示的に変換する必要があります。

  • double e = 2.718281828459045; オブジェクトo = e; int ee =(int)(double)o; 値伝送および参照転送:
  • 値タイプをメソッドに値タイプに送信する方法は、メソッドに渡されます。値タイプが渡される前に値タイプが梱包されている場合、メソッドのパラメーターの変更は元の値に影響しません。
double e = 2.718281828459045;
int ee = (int)e;  // 从double到int的隐式转换(需要装箱)
    参照は等しい値に等しい:
  • 参照タイプは比較に同じ参照を使用し、基準値ではなく参照が同じかどうかをチェックします。これは予期しない結果につながる可能性があります:
  • double e = 2.718281828459045; オブジェクトo1 = e; オブジェクトO2 = e; console.writeline(o1 == o2);
double e = 2.718281828459045;
object o = e;  // 装箱
int ee = (int)(double)o;  // 拆箱和显式转换
  • [struct |] {...} ポイントp = new Point(1、1); オブジェクトO = P; p.x = 2; console.writeLine((((((((((((((((((()))))))))).x); // output:1(構造の場合)/ 2(classの場合)]
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3