各位大神,这个问题怎么解决。

SSS_Sans 2017-12-08 06:21:29
string A=null;

string B= string.Format("你好,{0}",A);

int C=1;//随意的一个验真

if(C==1){
A="世界";
Console.WriteLine(B);
}

为啥输出的事: 你好,
就没了?
不应该是: 你好,世界
吗?

怎么解决呢?
...全文
245 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2017-12-13
  • 打赏
  • 举报
回复
楼上都说了,我就不赘述了。 1 string 是特殊的引用类型。可以当成值类型来使用。 2 既然当做值类型,那按照代码顺序,A那时就是没有值的。
  • 打赏
  • 举报
回复
你应该把string B= string.Format("你好,{0}",A); 放在 A="世界"; 的后面
wangmin06jb 2017-12-12
  • 打赏
  • 举报
回复
注意代码执行顺序,调试下就都知道了
码到_成功 2017-12-11
  • 打赏
  • 举报
回复
二楼正解!你不懂的话,调试一下,你就知道它的运行顺序了
浪子-无悔 2017-12-11
  • 打赏
  • 举报
回复
引用 1 楼 zhengbingfe 的回复:
注意,你是先string B= string.Format("你好,{0}",A);这时候B的值是"您好",你再怎么改A的值B都不会改了,除非再来一次B= string.Format("你好,{0}",A);
正解!!
圣殿骑士18 2017-12-09
  • 打赏
  • 举报
回复
代码是顺序执行的,这一编程的基本原则,你还不知道吗? b值在string B= string.Format("你好,{0}",A); 之时就定了,不会受后面代码的影响
吉普赛的歌 2017-12-08
  • 打赏
  • 举报
回复
string 是一种特殊的引用类型:https://www.cnblogs.com/yank/archive/2011/10/24/2204145.html
  • 打赏
  • 举报
回复
这其实就是引用类型赋值和值类型赋值是不一样的典型案例。
杀马特丶蛮牛 2017-12-08
  • 打赏
  • 举报
回复
注意,你是先string B= string.Format("你好,{0}",A);这时候B的值是"您好",你再怎么改A的值B都不会改了,除非再来一次B= string.Format("你好,{0}",A);

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧