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#