1

私はC#を始めたばかりです。すべての値型がそれぞれのにラップされていることに気づきましたstruct。私はその背後にある理由を調べましたが、あまり見つけることができませんでした(おそらく私は適切に検索しませんでした)。質問したかったのですがstruct、Javaのラッパークラスではなく、C#で値型がsとしてラップされる理由は何ですか?

編集:

にカーソルを合わせるintと、次のように表示されます:http: //msdn.microsoft.com/en-us/library/system.int32%28v=vs.71%29。コメントから、私はここで何か間違っていることを理解しているかもしれないことを理解しています。intに包まれていない場合struct、なぜそれに関する情報が表示されるのですか?

4

1 に答える 1

9

これは、 IDEが伝えていることを少し混乱させているだけだと思います。まず、Java とは異なり、 との間にはまったく違いintはありませんInt32。同じものの「プリミティブ」バージョンと「ボックス化」バージョンではありません。簡単に言えば、int便宜上の c# 名です。フルネーム (CLI は他の言語などをサポートしているため) はglobal::System.Int32; しかし、それは単なるエイリアスです。それらは同一で交換可能です。

第二に、struct「値型」の同義語です。繰り返しますが、同じ意味です (ほとんど)。

ここにはラッピングはありません。IDE が「struct Int32」について話すとき、それは「プリミティブ int」についても話しています。それらは同じです。要点は次のとおりintです。参照ではなく値として扱われます。これは、「構造体」であることを意味します。つまり、「参照ではない」ということです

于 2012-07-26T14:49:26.067 に答える