展开全部
C#中string和Object类型是引用传递。
但是string又有值传递的效果,这是因为string是常量,不能更改,所以如果在函数里更改的话,其实是生成了另外一个string,但是原来的string还在,函数外的string还是原来的string。函数里的string指向另外一个新生成的string,给人一种值传递的假象。
值传递和引用传递区别
值传递仅仅传递的是值
引用传递,传递的是内存地址,修改后会改变内存地址对应储存的值。
用数组来举例就最清楚了,例如定义一个数组a[]={1,2};
那么a[0]=1,a[1]=2。
如果把数组a里的元素值作为参数传递,实际上进行了值传递,对数组本身没有影响
如果把数组a的指针作为参数传递,假如处理的函数就可以直接修改数组a里的值。
代码实例:(只是写个大概的逻辑,语法可能有错误)
main()
{
int a[]={1,2
};
test(a);
printf(a[0]); //此处打印的值是3, 这就是引用传递。
}
public void test(int b[])
{
b[0]=3;
}
展开全部
楼上不对,应该是引用传递
但是string又有值传递的效果,这是因为string是常量,不能更改,所以如果在函数里更改的话,其实是生成了另外一个string,但是原来的string还在,函数外的string还是原来的string。函数里的string指向另外一个新生成的string,给人一种值传递的假象
string a = "aaa"; //==> a----->new String("aaa")
string b = a; //==> b----->a, 传引用
b = "bbb"; //==> b----->new String("bbb"), 传引用,b指向了一个新的字符串,a并没有变。
但是string又有值传递的效果,这是因为string是常量,不能更改,所以如果在函数里更改的话,其实是生成了另外一个string,但是原来的string还在,函数外的string还是原来的string。函数里的string指向另外一个新生成的string,给人一种值传递的假象
string a = "aaa"; //==> a----->new String("aaa")
string b = a; //==> b----->a, 传引用
b = "bbb"; //==> b----->new String("bbb"), 传引用,b指向了一个新的字符串,a并没有变。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
值传递,加ref是引用传递
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是的
是值传递的
要注意 尽量少用 STRING
是值传递的
要注意 尽量少用 STRING
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
两者都是引用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询