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 类型”字段:
选择选项 1 是为了确保程序稳定性并防止在代码中创建定时炸弹。
如何实现类似引用的行为
虽然您不能拥有 ref 类型的字段,但还有其他方法可以实现类似引用的效果行为:
以上是为什么 C# 不允许字段保存引用,有哪些替代方案?的详细内容。更多信息请关注PHP中文网其他相关文章!