C#の新機能で、参照型はメモリ内の他の場所(通常はヒープ上)のオブジェクトへの参照を格納する型です。私の質問は、私はそのメンバ変数として他のクラスを保持するクラスを持っている場合は、それらのクラスメンバ変数も参照を格納しますか?私はあなたのクラスメンバ変数が所有オブジェクトの存続期間に縛られることを望んでいるだけで、これらのメンバ変数がメモリ内の他のオブジェクトへの参照を格納するのは意味がないからです。これは、これらの変数の値を調べるときに不要な間接参照を追加するだけです。 これは、これらのメンバー変数を構造体にすることですが、そのメンバ変数に継承または他のクラスのみの機能が必要な場合はどうすればよいでしょうか?どんな洞察にも感謝します。参照型メンバーを持つC#参照型
0
A
答えて
5
あなたは自分のクラスのメンバ変数は、自分の所有しているオブジェクト
まあ、所有の寿命に縛らあるメンバ変数の寿命に を接続することにしたい多くの時間オブジェクト。オーナーオブジェクトインスタンスがガベージコレクションされると(メンバーオブジェクトへの他の参照がない限り)、ガベージコレクションの対象となります。
言語とこれらの概念に慣れてきたので、ほとんどすべての状況で参照型を扱うことが非常に望ましいことがわかります。クラスの代わりに構造体のような値型を定義し、クラスを介して構造体を選択するという決定は、クラスインスタンスの存続期間に結びついていない状況が限られています。 MSDN for guidance on choosing between a class and a structを参照してください。
0
他のクラスをメンバー変数として保持しているクラスがある場合、そのクラスメンバー変数にも参照が格納されていますか?
はい
...あなたは自分のクラスのメンバ変数は、自分の所有物の寿命に縛られたく...これを回避する一つの方法は、それらのメンバ変数の構造体を作ることですが、どのような場合それらのメンバー変数は継承または他のクラスのみの機能が必要ですか?
すべてのオブジェクトは参照がなくなるとガベージコレクションのフラグが立てられますので、構造体の代わりにクラスを使用するだけです。ストラクチャーはクラスに比べて珍しい品種です。
関連する問題
- 1. 派生参照型へのC#参照型のクローニング
- 2. 参照型を参照型以外の参照型に変換する
- 3. C# - 値型の参照ラッパー
- 4. C#ジェネリックス:参照型と値
- 5. C#別の参照型
- 6. 多型参照
- 7. 参照クラス型を
- 8. 値型と参照型
- 9. C - 不完全な型への参照を間接参照
- 10. C++ 11関数型の参照を参照で定義する
- 11. .NETの参照型
- 12. List参照型オブジェクト
- 13. アンマーシャルJSON参照型
- 14. 参照型をメンバに持つ値型をコピーする
- 15. 参照メンバー
- 16. C#文字列参照型ですか?
- 17. 値型変数のストア参照C#
- 18. C言語の中での参照型
- 19. C++単純参照型関数
- 20. TypeScript型定義の参照
- 21. 自己参照汎用型
- 22. ラケット:定義型参照
- 23. Mysqlストアド・プロシージャ列型参照
- 24. 一般参照型エラーmonoTouch
- 25. TypeScriptの自己参照型
- 26. fk参照のUnkownデータ型
- 27. サービス参照複合型
- 28. リダイレクトアクションへと参照型
- 29. 参照型のWPFスタイルDependencyProperty
- 30. オブジェクト型と参照型の違い
'これを回避する方法は、メンバー変数をstructs' <= nopeにすることです。http://stackoverflow.com/a/1932787/1260204とhttps://blogs.msdn.microsoft.com/を参照してください。 ericlippert/2009/04/27/the-stack-of-an-implementation-detail-part-one/ – Igor
@Igorいいえ、ジェイソンは正しいです。問題は、内部オブジェクトがスタックに存在するかどうかではなく、外部オブジェクトが参照または内部オブジェクト自体を格納するかどうかであった。 –
@NicoSchertler - ああ、私は誤解しました。 – Igor