私には2つのクラスがあり、1つは基本クラスで、もう1つは派生クラスです。オブジェクトのスライスを制限したいのですが、C#.netを使用してどのように制限できますか?
1060 次
1 に答える
0
アップデート:
以下に説明する私の最初の考えは真実ではないことがわかりました:参照:JavaでのC++スライシング/C#
元の回答:
私が正しく理解していれば、これは理論的な質問です。
REDUCING
スライスは、派生クラスで新しいメンバーを定義しないことによって実行できます。
スライスは、派生クラスのインスタンスを基本クラスの参照型に割り当てるときに発生します。この場合、システムは新しいデータ型をどこに割り当てるかを認識しません。これは、派生クラスでのみ定義され、基本クラスでは定義されていないためです。
しかし、それを行う方法はありませんRESTRICT
。これが発生すると想定されており、次のように定義されています。
サブクラスオブジェクトからの値による割り当ての自然で避けられない結果
sealed
ただし、オブジェクトのスライスを制限する継承を防ぐようにクラスを宣言できます。これは、原因(継承)を防ぐため、値によってベース参照に割り当てる派生クラスがないためです。
于 2012-10-03T14:03:51.730 に答える