当前位置:编程学习 > C#/ASP.NET >>

C#中的String到底是你想的那样吗

在论坛里找了关于C#中String和string的区别, 但结果不满意。 大多数人都说两者一样, string只是String 的一个别名, string是类型, 而String是类

但我测过了, 
              char[] c1 = new char[] { 'a','b'};
            char[] c2 = new char[] { 'a', 'b'};
            String s1=new String(c1) ;
            String s2 = new String(c2);
            bool b=s1.Equals(s2);  //s1 s2都是引用类型的, 它们存在不同的内存单元, 但结果b=true 为什么会这样?是因为c1、c2吗? 它们两个也是引用
              我也看了s1 和 s2的hashcode, 在c1和c2相等时, s1 、s2和hashcode也相等 , 反之则不相等

              为什么比较String时会和它的内容有关系 ? --------------------编程问答-------------------- 楼主太小气了,问问题居然不给分。
string是一种特殊的引用类型,你完全可以把它当作值类型来看待,两个引用类型用Equals比较内容没有什么大惊小怪的吧,因为Equals可以重载,只要你愿意,你也可以让你写的类用Equals比较时比较内容而不是引用。 --------------------编程问答-------------------- 不好意思, 真是没分了, 想留点下载呢, 见谅 --------------------编程问答-------------------- 明白了, 在用equals比较的时候, 是要看它具体重写时的算法  对吧  --------------------编程问答-------------------- 楼主应该仔细阅读MSDN里关于String.Equals的说明。
另外,如果要比较两个对象是否同一个引用,可用object.ReferenceEquals方法。 --------------------编程问答-------------------- 上面有人已经回答了,string是引用类型,但是传值的时候当作值类型。 --------------------编程问答-------------------- 下载的分和论坛的分没有任何联系 --------------------编程问答-------------------- Equals是在做值的比较,不是做指针地址比较 --------------------编程问答-------------------- 仔细研究,学习ing............. --------------------编程问答-------------------- 恩,都对 --------------------编程问答-------------------- string当值类型就好了 --------------------编程问答-------------------- 学习了。。。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,