1
   public void main()
   {    
    string test = "testing";
    ChangeVal(test);
    Console.WriteLine(test);
   }
private void ChangeVal(string test)
{
    test = "in child";
}

如果 String 是一个类。我将字符串作为参数传递给函数。在函数中更改该字符串的值。但在 main 函数中,它显示了以前的值。它将打印测试值。

当我创建具有 2 个成员变量整数和字符串的 Foo 类时。当我将类的对象作为参数传递并更改函数中成员变量的值时。它将在主函数中给出更新的值

public class Foo
{
    public string test = "testing";
    public int i = 5;

}

public void main()
{
        Foo obj=new Foo();
        Console.WriteLine(obj.test);
        ChangeVal(obj);
        Console.WriteLine(obj.test);
}

private void ChangeVal(Foo obj)
{
    obj.test = "in child";
    obj.i = 5;
}

如果字符串是类。它将更新变量的值。May string 是 Unicode 字符的序列,这就是它在第一种情况下不更新值的原因。任何机构都可以详细解释这一点。

4

2 回答 2

3

在函数中更改该字符串的值

字符串是不可变的。您不能更改字符串的值。您可以将另一个字符串分配给同一个引用,但您需要使用ref.

public void main()
{    
  string test = "testing";
  ChangeVal(ref test);
  Console.WriteLine(test);
}

private void ChangeVal(ref string test)
{
    test = "in child";
}

但是,您Foo的类是可变的,因此您可以为其成员分配不同的值。

于 2012-11-20T12:17:23.747 回答
2

尝试通过引用传递参数以在主线程中更新 var:

private void SeString(ref string chain)
        {
            chain="new string";

        }

然后调用:

string variable="hello";
SeString(ref  variable);

字符串输出是“新字符串”

于 2012-11-20T12:18:26.963 回答