C# クラス フィールドの参照割り当て
C# で、クラス フィールドに「参照」によって代入しようとすると、予期しない動作が発生する可能性があります。次のコードを考えてみましょう。
public class X { public X() { string example = "X"; new Y(ref example); new Z(ref example); System.Diagnostics.Debug.WriteLine(example); } } public class Y { public Y(ref string example) { example += " (Updated By Y)"; } } public class Z { private string _Example; public Z(ref string example) { this._Example = example; this._Example += " (Updated By Z)"; } } var x = new X();
期待される出力は「X (Y によって更新) (Z によって更新)」ですが、代わりに「X (Y によって更新)」のみが出力されます。この現象は、「ref パラメータ」をフィールドに割り当てると参照が失われるために発生します。
なぜフィールドは参照を保持できないのですか?
次の場合、可能なオプションは 3 つだけです。 「ref type」のフィールドを考慮します:
オプション 1 は、プログラムの安定性を確保し、コード内で時限爆弾が作成されるのを防ぐために選択されました。
参照のような動作を実現する方法
ref 型のフィールドを持つことはできませんが、参照のようなフィールドを実現する別の方法があります。動作:
以上がC# ではフィールドに参照を保持できないのはなぜですか? 代替手段は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。