读书人

请问一下关于==和equals的有关问题

发布时间: 2012-04-25 19:32:32 作者: rapoo

请教一下关于==和equals的问题
在java中
String a = new String(new char[] { 'h', 'e', 'l', 'l', 'o' });
String b = new String(new char[] { 'h', 'e', 'l', 'l', 'o' });
System.out.print(a == b);
System.out.print(a.equals(b));

Object g = a;
Object h = b;
System.out.print(g == h);
System.out.print(g.equals(h));

输出结果为:false true false true

这个我理解

但在C#中,为什么

string a = new string(new char[] { 'h', 'e', 'l', 'l', 'o' });
string b = new string(new char[] { 'h', 'e', 'l', 'l', 'o' });
Console.WriteLine(a == b);
Console.WriteLine(a.Equals(b));

object g = a;
object h = b;
Console.WriteLine(g == h);
Console.WriteLine(g.Equals(h));

输出结果为:true true false true

是不是Java和C#的new机制不一样,求指教。。。谢谢

[解决办法]

探讨

如果两个都换成:
String a = "aa";
String b = "aa";
之类的,就是不用new,此时Java和C#的结果都是一样的,可以用堆栈来解释。可上面new出来的话就不一样了,是不是new机制问题?

读书人网 >C#

热点推荐