■■■重载==操作符的问题
我先在编写一个类时需要重载==操作符以判断类的成员数据是否相等,但遇到了一个诡异的问题:   
 当我在进行成员数据的判断之前,先需要判断该实例是否为null(因为如果为null,则会产生异常),而要判断该实例是否为null,又需要调用==操作符,这样就形成了无限递归而导致堆栈溢出异常。   
 请问大家是如何处理这个问题的?   
 代码如下:   
                         public   static   bool   operator   ==(Hex   h1,Hex   h2) 
                         { 
                                     if   (h1   ==   null   ||   h2   ==   null)      //此处导致无限递归而堆栈溢出 
                                                 return   false;                                       
                                     if   (h1.getBytesCount()   !=   h2.getBytesCount())   //如果不判断对象为null,此处就会产生异常 
                                                 return   false;   
                                     byte[]   b1   =   h1.getBytes(); 
                                     byte[]   b2   =   h2.getBytes(); 
                                     for   (int   i   =   0;   i    <   b1.Length;   i++) 
                                     { 
                                                 if   (b1[i]   !=   b2[i]) 
                                                             return   false; 
                                     } 
                                     return   true; 
                         }
------解决方案--------------------不要在引用类型中重载==运算符! 
 参考《Effective C#》原则9 Understand the Relationships Among ReferenceEquals(), static Equals(), instance Equals(), and operator==   
 http://www.cnblogs.com/WuCountry/archive/2007/02/25/656433.html
------解决方案--------------------可以用ReferenceEquals来判断。 
 另外同意ls的,C#里不要重载==,用Equals方法。