关于string类型的疑问...

lj915 2006-03-20 02:45:16
string是引用类型,但为什么使用起来跟值类型相似呢?

如下面的代码显示:

static void Main()
{
string str = "abcd";

Console.WriteLine(str);

changeString(str);

Console.WriteLine(str);
}

private void changeString(string _str)
{
_str = "1234";
Console.WriteLine(_str);
}

输出结果:
abcd
1234
abcd

因为string是引用类型,在changeString里面已经改变了str的值为"1234",为什么第三次输出的值,仍是"abcd"呢?
...全文
106 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jietuan 2006-03-20
  • 打赏
  • 举报
回复
哈哈 搞错

string 是引用类型,但比较时是按值比较的;

比如 string a="1"; string b="1";

if(a==b)
{
//输出cc
}
else
{
//输出dd

}


答案是 cc
Dogfish 2006-03-20
  • 打赏
  • 举报
回复
因为你传的是个值
livode 2006-03-20
  • 打赏
  • 举报
回复
你在调用函数的时候传的是个值,而不是地址。改成ref就可以了。
lovvver 2006-03-20
  • 打赏
  • 举报
回复
你把这个方法改一下,应该就会改了:
private void changeString(ref string _str)
{
_str = "1234";
Console.WriteLine(_str);
}
然后调用处也改一下:
changeString(ref str);
itmingong 2006-03-20
  • 打赏
  • 举报
回复
原来是这样啊。。。。
zahuifan 2006-03-20
  • 打赏
  • 举报
回复
string 是比较奇怪的一个类型。它除了可以被赋值为 null 外,其他的特征都和值类型一模一样,所以搂主就把它当作值类型用好了。
viena 2006-03-20
  • 打赏
  • 举报
回复
就是为了更简单方便啊~
diandian82 2006-03-20
  • 打赏
  • 举报
回复
string传递的时候会new一个新的string
lj915 2006-03-20
  • 打赏
  • 举报
回复
就是这么定的,不要问为什么~

~~~~~~~~~~

这可不好吧,知其然而不知其所以然...
lj915 2006-03-20
  • 打赏
  • 举报
回复
呵呵...上面的例子应该是输出"cc"而不是"dd"

刚才搜索了一下,原来之前已经有人问过类似的问题了,

答案是string是"特殊的"引用类型,使用起来跟值类型差不多...

《.NET 框架程序设计修订版》会有详细的介绍...
viena 2006-03-20
  • 打赏
  • 举报
回复
就是这么定的,不要问为什么~
jietuan 2006-03-20
  • 打赏
  • 举报
回复
string 是引用类型,但比较时是按值比较的;

比如 string a="1"; string b="1";

if(a==b)
{
//输出cc
}
else
{
//输出dd

}


答案是 dd

110,535

社区成员

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

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

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