C# 引用类型之特例string_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > C# 引用类型之特例string

C# 引用类型之特例string

 2017/9/17 23:26:55  关中汉子  程序员俱乐部  我要评论(0)
  • 摘要:在C#编程的时候经常会使用字符串(string)类型,它也是引用类型,但是处处都不作为引用的用法来使用,实属特例,下来我一一罗列出来,供自己记忆方便:1)字符串的直接赋值:本身字符串就是引用类型,应该使用new对象方法一个实例,但是微软为了方便大家,可以直接定义字符串变量并且赋值操作,例如:stringa="我的中国心";,这样只是简化我们的操作;2)一个字符串赋值给另一个字符串变量:正常的引用类型会将两个引用变量指向同一个地址,但是一个字符串变量赋值给另一个字符串变量时
  • 标签:C#

    在C#编程的时候经常会使用字符串(string)类型,它也是引用类型,但是处处都不作为引用的用法来使用,实属特例,下来我一一罗列出来,供自己记忆方便:

     1)字符串的直接赋值:本身字符串就是引用类型,应该使用  new 对象方法一个实例,但是微软为了方便大家,可以直接定义字符串变量 并且赋值操作,例如: string a = "我的中国心"; ,这样只是简化我们的操作;

     2)一个字符串赋值给另一个字符串变量:正常的引用类型会将两个引用变量指向同一个地址,但是一个字符串变量赋值给另一个字符串变量时,缺时建立了两个不同的地址空间,例如:

              string a = "12345"; string b = a; 

              上面的代码是两个不同的地址引用,只是把a的字符串内容赋值给b,a和b内容是一样的;

    3)同一个字符串的多次赋值:按照一般的思维对一个字符串变量赋值,只是改变其内容,不会改变其地址,但是字符串比较奇葩,当给同一个字符串变量再次赋值的时候,它会重新分配内存空间,建立一个新的地址,然后把

              这个地址赋值给原来的字符串变量,举例说明:

                string a= "123";  a = "456"

                当第二次给a赋值为"456"时,它是创建新的内存空间,然后把新建的内存地址赋值给a变量,以前的"123"的内存摒弃不用,等待垃圾回收。

    4)字符串作为函数参数传递:当字符串作为函数的参数传递时,本身是引用类型,应该是将变量的地址引用传递过去,以后在函数里对该参数的修改都会改变该字符串的值,但是我告诉你,结果它只是传递了该字符串的副本给

             函数体,在函数里对该字符修改,居然不影响传递参数的值,当然,字符串的传递也可以当引用类型使用,主要添加ref 即可,可截图:

           

    5)字符串的比较:在字符串作为引用时,比较两个引用类型是否相等,只是比较两个引用的地址是否相等(除非你重载了Equal函数),但是当我们在比较字符串的时候,发现其实他们比较的是字符串的内容,并非是引用的地址,

           这是引用string类重载了equal函数,是指比较字符的内容,在这点上  == 和 equal的结果其实是一样的;

   6)字符串的内存驻留:当我们在创建具有相同的字符串内容的变量时,这些字符串变量其实指向的同一个内存地址,这点有点像C++里的内联;

   如有其它特别之处,烦请高手给予指点,如有什么不同见解之处,请留言,大家相互学习,菜鸟才能一步步成长起来,呵呵!!!

上一篇: .Net Core使用Socket与树莓派进行通信 下一篇: 没有下一篇了!
发表评论
用户名: 匿名