CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

关于string类型的疑问...

楼主lj915(. ) 烦!烦!烦!( .)2006-03-20 14:45:16 在 .NET技术 / C# 提问

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"呢? 问题点数:50、回复次数:12Top

1 楼jietuan(伪君子)回复于 2006-03-20 14:53:39 得分 10

string   是引用类型,但比较时是按值比较的;  
   
  比如   string   a="1";     string   b="1";  
   
  if(a==b)  
  {  
        //输出cc  
  }  
  else  
  {  
        //输出dd  
   
  }  
   
   
  答案是     ddTop

2 楼viena(维也纳N02)回复于 2006-03-20 14:58:10 得分 0

就是这么定的,不要问为什么~Top

3 楼lj915(. ) 烦!烦!烦!( .)回复于 2006-03-20 15:03:04 得分 0

呵呵...上面的例子应该是输出"cc"而不是"dd"  
   
  刚才搜索了一下,原来之前已经有人问过类似的问题了,  
   
  答案是string是"特殊的"引用类型,使用起来跟值类型差不多...  
   
  《.NET   框架程序设计修订版》会有详细的介绍...Top

4 楼lj915(. ) 烦!烦!烦!( .)回复于 2006-03-20 15:04:10 得分 0

就是这么定的,不要问为什么~  
   
  ~~~~~~~~~~  
   
  这可不好吧,知其然而不知其所以然...Top

5 楼diandian82(点点(nothing))回复于 2006-03-20 15:07:20 得分 5

string传递的时候会new一个新的stringTop

6 楼viena(维也纳N02)回复于 2006-03-20 15:08:53 得分 5

就是为了更简单方便啊~Top

7 楼zahuifan(杂烩饭)回复于 2006-03-20 15:17:54 得分 5

string   是比较奇怪的一个类型。它除了可以被赋值为   null   外,其他的特征都和值类型一模一样,所以搂主就把它当作值类型用好了。Top

8 楼itmingong(nous+wisdom+courage)回复于 2006-03-20 15:36:11 得分 5

原来是这样啊。。。。Top

9 楼lovvver(ElephantTalk.Bright)回复于 2006-03-20 15:49:21 得分 10

你把这个方法改一下,应该就会改了:  
  private   void   changeString(ref   string   _str)  
  {  
            _str   =   "1234";  
            Console.WriteLine(_str);  
  }  
  然后调用处也改一下:  
  changeString(ref   str);Top

10 楼livode(啊水)回复于 2006-03-20 15:55:53 得分 5

你在调用函数的时候传的是个值,而不是地址。改成ref就可以了。Top

11 楼dogfish(PowerJS.com)回复于 2006-03-20 16:07:04 得分 5

因为你传的是个值Top

12 楼jietuan(伪君子)回复于 2006-03-20 16:14:25 得分 0

哈哈   搞错  
   
  string   是引用类型,但比较时是按值比较的;  
   
  比如   string   a="1";     string   b="1";  
   
  if(a==b)  
  {  
        //输出cc  
  }  
  else  
  {  
        //输出dd  
   
  }  
   
   
  答案是     cc  
  Top

相关问题

  • (高分赠送)关于String 类型的疑问!
  • 类型转换疑问
  • 关于MFC的POSITION类型的疑问
  • 一个char数据类型的疑问?
  • 关于Point类型的一点疑问
  • 有关数据类型的疑问~
  • 关于TstringList类型的疑问
  • string 中 begin() 类型?
  • TMemoryStream 类型如何转为:String类型?
  • string,值类型和引用类型。

关键词

  • changestring
  • 类型
  • 值
  • 引用
  • 输出
  • abcd
  • 答案
  • str
  • writeline
  • dd

得分解答快速导航

  • 帖主:lj915
  • jietuan
  • diandian82
  • viena
  • zahuifan
  • itmingong
  • lovvver
  • livode
  • dogfish

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo