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呢??

解决方案 »

  1.   

    byte[] b1 = new byte[2];
    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!!
      

  2.   

    Byte.Equals Method (System):Returns a value indicating whether two instances of System.Byte represent the same value有相同值的两个实例?
    上面代码中只有&b1 = &b2时才是Equal的,即若有b2 = b1语句,b1.Equals(b2)才为true ;
      

  3.   

    数组的Equals方法是从Object类继承的,作用和==是一样的
    所以除非b1和b2代表同一数组,否则返回false
      

  4.   

    原来如此!!String类重写了Equals方法,而Array却没有,哈哈
    谢谢大家了。可是怎么知道Framework中的类哪些重写了Equals进行内容(值)比较,哪些没有呢?
      

  5.   

    数组的Equals方法是从Object类继承的,作用和==是一样的
    所以除非b1和b2代表同一数组,否则返回false+++++++++++++++++++好像不是这样的吧Equals比较的是实例的值ReferenceEquals比较的是引用的是否为同一个对象
      

  6.   

    using System;public class MyClass {
       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*/
      

  7.   

    其实二者的Equals方法继承的是object的,Equals方法所使用的是object对象的GetHashCode方法,你可以自己实现数组对象的GetHashCode方法
      

  8.   

    public static void bj(string  [] a,string [] b)
    {
    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");
    }
    }
      

  9.   

    sring的Equals()和==都是值比较,而数组的就不是。