public void main()
{
string test = "testing";
ChangeVal(test);
Console.WriteLine(test);
}
private void ChangeVal(string test)
{
test = "in child";
}
如果String是一个类。 我将字符串作为参数传递给函数。在函数中更改该字符串的值。 但是在main函数中它显示了以前的值。它将打印测试值。
当我创建具有2个成员变量integer和string的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;
}
如果string是类。它将更新变量的值。 May string是Unicode字符的序列,这就是为什么它在第一种情况下不更新值的原因。 任何机构都可以详细解释这一点。
答案 0 :(得分:3)
更改函数
中该字符串的值
字符串是不可变的。您无法更改字符串的值。您可以将另一个字符串分配给同一个引用,但是您需要使用ref
传递引用。
public void main()
{
string test = "testing";
ChangeVal(ref test);
Console.WriteLine(test);
}
private void ChangeVal(ref string test)
{
test = "in child";
}
但是,Foo
类是可变的,因此您可以为其成员分配不同的值。
答案 1 :(得分:2)
尝试通过引用传递参数以在主线程中更新var:
private void SeString(ref string chain)
{
chain="new string";
}
然后致电:
string variable="hello";
SeString(ref variable);
字符串输出是“new string”