为什么?myAL不等于myAL1。请解释一下.....

jspxnet 2001-10-08 10:20:24
using System;
using System.Collections;
public class SamplesArrayList
{

public static void Main()
{
// Create and initialize a new ArrayList.
ArrayList myAL = new ArrayList();
ArrayList myAL1 = new ArrayList();
myAL.Add("Hello");
myAL.Add("World");
myAL.Remove("World");

myAL1.Add("Hello");
if (myAL1.Equals(myAL))
Console.WriteLine( "等于" );
else Console.WriteLine( "不等于" );

// Display the properties and values of the ArrayList.

Console.WriteLine( "\tCount: {0} \tCapacity: {1}", myAL.Count ,myAL.Capacity);
Console.Write( "\tValues:" );
PrintValues( myAL );
Console.WriteLine( "\tCount: {0} \tCapacity: {1}", myAL1.Count ,myAL1.Capacity);
Console.Write( "\tValues:" );
PrintValues(myAL1);
Console.ReadLine();

}

public static void PrintValues( IEnumerable myList )
{
System.Collections.IEnumerator myEnumerator = myList.GetEnumerator();
while ( myEnumerator.MoveNext() )
Console.Write( "\t{0}", myEnumerator.Current );
Console.WriteLine();
}
}
...全文
102 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
samlu 2001-10-08
  • 打赏
  • 举报
回复
myAL1和myAl是两个不同的对象,而Equals方法是两个对象的比较,当然结果是false.
westaf 2001-10-08
  • 打赏
  • 举报
回复
"Equals Determines whether two Object instances are equal."
这就是说Equals是对象实例的比较。用当然是有的,如:
object a = new object();
object b = a;
// do something...
Debug.Assert(a.Equals(b));

在这里Equals正好与==相同,但并不是总是这样的。具体情况应以帮助文档为准。

如果要比较两个ArrayList的内容,可以继承一个类,然后重载==运算符。
jspxnet 2001-10-08
  • 打赏
  • 举报
回复
Equals对象的比较,并只有myAL.Equals(myAl)才是true,
自己等于自己,Equals还有什么意义呢,这个法发还不如不要。
会是这样吗?
myAL1==myAL 也是不等,=》Equals也是==
对不?
jhnhu 2001-10-08
  • 打赏
  • 举报
回复
>myAL1和myAl是两个不同的对象,而Equals方法是两个对象的比较,当然结果是false.
如果这样,那只有myAL.Equals(myAl)才是true咯,自己等于自己,还有什么好比的?
jhnhu 2001-10-08
  • 打赏
  • 举报
回复
这个得查查文档或上新闻组问问。
给你这样转来转去地,相等的机会不大。
但CLR内部到底怎样运作的,我很想知道。最近没时间找答案。

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧