この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 22710|答える: 0

[出典] C#におけるstructとclassの違い

[リンクをコピー]
掲載地 2016/06/24 11:53:06 | | |
クラスとstructの最も重要な違いは、クラスが参照型であるのに対し、structは値型であり、メモリ内での割り当てが異なる点です。

クラスとは何でしょうか?

クラスはオブジェクト指向プログラミングにおける基本的な概念であり、通常はフィールド、属性、メソッド、属性、コンストラクタ、インデクサ、演算子などを含むカスタムデータ構造の一種です。 .NETでは、すべてのクラスは最終的にSystem.Objectクラスから継承されるため、参照型となります。つまり、クラスのインスタンスを新たに作成したとき、そのインスタンスのアドレスが管理ヒープに保存され、インスタンスの値が管理ヒープに保存されます。

構造体とは何ですか?

構造体は、関連する変数の集合を単一の変数エンティティに整理するための値型です。 すべての構造体はSystem.ValueTypeクラスから継承されているため、値型です。つまり、structインスタンスはスレッドが割り当てられたスタック上に作成され、その値を格納します。 したがって、structを使う場合はintやcharのような基本的な型クラスとして扱うことができます。



1. クラスは参照型、structsは値型

クラスは参照型であるため、クラスはnullに設定できます。 しかし、structは値型なのでnullにはできません。




2. クラスをインスタンス化すると、そのクラスはヒープ上に作成されます。 そして、スタック上に生成される構造体をインスタンス化します

3. クラスインスタンスへの参照を使っています。 そして、あなたは構造体への参照を使っていません。 (代わりに直接使う)

4. クラスをメソッドの引数として渡すとき、参照を渡します。 structは参照ではなく値を渡します。

5. 構造体はイニショナイザを持つことはできませんが、クラスはイニショナイザを持つことができます。





6. クラスは明らかなパラメータレス構造体を持つことができますが、構造体はできません





7. 新しいキーワードはクラス使用前にインスタンス化されなければならず、構造体には必要ありません




8. クラスは継承と多型性を支持しますが、構造体はそうではありません。 注:しかし、Structはクラスと同様にインターフェースを実装できます

9. Structは継承をサポートしないため、そのメンバーは保護されたものや保護されたInternal Withrealで変更できません

10. クラスのコンストラクタはすべてのフィールドを初期化する必要がなく、Structのコンストラクタはすべてのフィールドを初期化しなければなりません







11. クラスはデストラクタを定義できますが、ストラクトは定義できません

12. クラスは大規模かつ複雑なデータに適しており、Structは新しい型で、しばしば一部のデータの組み合わせとして使われます。



適用される場合:Structはパフォーマンス上の利点を持ち、Classはオブジェクト指向拡張の利点を持っています。

基盤となるデータストアに使われる型はStruct型として設計され、アプリケーションの動作を定義する型はクラスとして設計されています。 このタイプの将来の応用に不安がある場合は、Classを使うべきです。




先の:Alipay RSA秘密鍵および公開鍵ワンクリック生成ツール
次に:C#のMySQLヘルプクラスを逆にして保存してください
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com