您当前的位置: 首页 >  c#

C#中的字符串类型-String类

发布时间:2010-11-22 10:33:00 ,浏览量:0

字符串是程序常用的数据类型,它是一种引用类型。虽然C#是严格区分大小写的,但是string和String在C#是一样的。string相当于String在C#中的别名,在C#中它们是完全相同的。

String 是字符串类型,它是个特殊的引用类型,所以String对象保存在堆上,一切都是那么的平常;然而,不平常的出现了: class Class1 { static void StrChange(string str) { str = "hellow"; } static void Main() { string str = "123";//申明一个字符串 StrChange(str);//调用方法 Console.WriteLine(str);//输出字符串 } } 输出的结果是 "123" string 到底是值类型还是引用类型? 如果是引用类型的话.输出的结果应该是: "hellow" 如果是值类型,结果倒还说的过去。但是string 是引用类型啊,这是怎么回事?? 这是因为String对象是不可变的,什么是不可变?

一旦初始化字符创类型变量,那么它里面的内容就固定下来,所有对它的修改(包括修改内容和拼接),将重新产生一个新的字符串对象,原来的字符串对象不变。看来似乎修改了string对象的方法实际上是返回一个包含修改内容的新string对象。

我们看下面的例子:

string a="i am a";//在堆上为字符串a分配内存,并初始化

string b=a; //声明b,与a指向同一内存空间

System.Console.WriteLine("a is"+a);

System.Console.WriteLine("b is"+b);

a="i am aa"; //改变a中的值

System.Console.WriteLine("a is now"+a);

System.Console.WriteLine("b is now"+b);

结果:

a is i am a

b is i am a

a is now i am aa

b is now i am a

可以看出,a和b虽然指向同一内存空间,但a的改变,并不会影响到b,a改变时,它变成了一个全新的对象,b还是指向原来的对象空间。

结论:虽然字符串属于引用类型,但是它并不像引用类型那样工作,表面上更像一个值类型。

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    106360博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0466s