首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-04-25 
请教一下关于和equals的问题在java中String a new String(new char[] { h, e, l, l, o })S

请教一下关于==和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机制问题?

热点排行