编号ref纯粹是一个调用约定。您不能使用它来限定字段。在Z中,_Example被设置为传入的字符串引用的值。然后,您可以使用+
=为它分配一个新的字符串引用。您永远不会分配示例,因此ref无效。
所需的唯一解决方法是拥有一个包含引用(此处为字符串)的共享的可变包装对象(数组或虚拟StringWrapper)。通常,如果需要,可以找到更大的可变对象供类共享。
public class StringWrapper { public string s; public StringWrapper(string s) { this.s = s; } public string ToString() { return s; } } public class X { public X() { StringWrapper example = new StringWrapper("X"); new Z(example) System.Diagnostics.Debug.WriteLine( example ); } } public class Z { private StringWrapper _Example; public Z( StringWrapper example ) { this._Example = example; this._Example.s += " (Updated By Z)"; } }


