C#对象参考:我该怎么做?

Hùn*_*uân 2 c# pointers

这是课程考试

public class Test
{
    public string mystr;
}
Run Code Online (Sandbox Code Playgroud)

我从方法中调用它:

  string my = "ABC";
  Test test = new Test();
  test.mystr = my;
  test.mystr = "";
Run Code Online (Sandbox Code Playgroud)

上面的位代码的结果是:my = "ABC"test.mystr = ""

当我改变时如何设置my为空字符串?""test.mystr = ""

Mar*_*der 7

如果我理解正确,你想要变量mytest.myStr链接,所以如果一个变化,其他变化?

答案很简单:它不可能!

字符串是不可变的类.多个引用可以指向字符串实例,但是一旦修改了此实例,就会使用新值创建字符串实例.因此,将新引用分配给变量,而其他变量仍指向其他实例.

有一个解决方法,但我怀疑你会对它不满意:

public class Test
{
    public string mystr;
}

Test myTest1 = new Test { myStr = "Hello" };
Test myTest2 = myTest1;
Run Code Online (Sandbox Code Playgroud)

现在,如果你改变了myTest1.myStr,变量myTest2.myStr也会被修改,但这只是因为myTest1myTest2是相同的实例.

还有其他类似的解决方案,但所有这些都归结为相同的方面:一个持有字符串引用的类.