byte[] b1 = {0,0};
byte[] b2 = new byte[2];
b2[0] = 0;
b2[1] = 0;bool bEqual = b1.Equals(b2);
bool bEqual2 = b1 == b2;为什么bEqual 和 bEqual2都是False呢??
byte[] b2 = new byte[2];
b2[0] = 0;
b2[1] = 0;bool bEqual = b1.Equals(b2);
bool bEqual2 = b1 == b2;为什么bEqual 和 bEqual2都是False呢??
b1[0] = 0;
b1[1] = 0;
byte[] b2 = new byte[2];
b2[0] = 0;
b2[1] = 0;
bool bEqual = b1.Equals(b2);
bool bEqual2 = (b1 == b2);
MessageBox.Show(bEqual.ToString());
MessageBox.Show(bEqual2.ToString());这样两个都是定长了,还是两个False!!
上面代码中只有&b1 = &b2时才是Equal的,即若有b2 = b1语句,b1.Equals(b2)才为true ;
所以除非b1和b2代表同一数组,否则返回false
谢谢大家了。可是怎么知道Framework中的类哪些重写了Equals进行内容(值)比较,哪些没有呢?
所以除非b1和b2代表同一数组,否则返回false+++++++++++++++++++好像不是这样的吧Equals比较的是实例的值ReferenceEquals比较的是引用的是否为同一个对象
public static void Main() {
string s1 = "Tom";
string s2 = "Carol";
Console.WriteLine("Object.Equals(\"{0}\", \"{1}\") => {2}",
s1, s2, Object.Equals(s1, s2)); s1 = "Tom";
s2 = "Tom";
Console.WriteLine("Object.Equals(\"{0}\", \"{1}\") => {2}",
s1, s2, Object.Equals(s1, s2)); s1 = null;
s2 = "Tom";
Console.WriteLine("Object.Equals(null, \"{1}\") => {2}",
s1, s2, Object.Equals(s1, s2)); s1 = "Carol";
s2 = null;
Console.WriteLine("Object.Equals(\"{0}\", null) => {2}",
s1, s2, Object.Equals(s1, s2)); s1 = null;
s2 = null;
Console.WriteLine("Object.Equals(null, null) => {2}",
s1, s2, Object.Equals(s1, s2));
}
}
/*This code produces the following output.Object.Equals("Tom", "Carol") => False
Object.Equals("Tom", "Tom") => True
Object.Equals(null, "Tom") => False
Object.Equals("Carol", null) => False
Object.Equals(null, null) => True*/
{
int n=0;
if(a.Length == b.Length)
{
for(int i=0;i<a.Length;i++)
{
if(a[i].Equals(b[i]))
{
n++;
}
else
{
System.Console.Write("no");
}
}
if(n==a.Length)
{
System.Console.Write("ok");
} }
else
{
System.Console.Write("no");
}
}