请问C#中string和Object类型是值传递还是引用传递?

谢谢!... 谢谢! 展开
 我来答
xiangjuan314
推荐于2018-04-13 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2921万
展开全部

  C#中string和Object类型是引用传递。

  但是string又有值传递的效果,这是因为string是常量,不能更改,所以如果在函数里更改的话,其实是生成了另外一个string,但是原来的string还在,函数外的string还是原来的string。函数里的string指向另外一个新生成的string,给人一种值传递的假象。


  值传递和引用传递区别

  1. 值传递仅仅传递的是值

  2. 引用传递,传递的是内存地址,修改后会改变内存地址对应储存的值。

  3. 用数组来举例就最清楚了,例如定义一个数组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;

  }

百度网友6eed2f8
推荐于2017-12-16 · TA获得超过5082个赞
知道大有可为答主
回答量:3423
采纳率:0%
帮助的人:3822万
展开全部
楼上不对,应该是引用传递
但是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并没有变。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fbobo_com
2007-09-02 · 贡献了超过184个回答
知道答主
回答量:184
采纳率:0%
帮助的人:93.3万
展开全部
值传递,加ref是引用传递
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
柯南倒尔
2007-09-02 · TA获得超过1318个赞
知道大有可为答主
回答量:3678
采纳率:0%
帮助的人:2522万
展开全部
是的
是值传递的
要注意 尽量少用 STRING
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
是淡0It499
2015-12-21 · 超过10用户采纳过TA的回答
知道答主
回答量:74
采纳率:0%
帮助的人:35.1万
展开全部
两者都是引用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式