c#对象私有属性在重载Equals中的使用

  一般情况下对象的比较会涉及到重载Equals方法,这里所说的方法只对同类型对象的比较有效。
  请看下面两段代码:
  1。不同类的比较

public enum ComplexionType
{
    yellow,
    white,
    black
}


class Chinese
{
    
public Chinese(ComplexionType complexionType)
    
{
        
this.complexionType = complexionType;
    }


    
private ComplexionType complexionType;

    
public override bool Equals(Object obj)
    
{
        
if (!((obj is Chinese) || (obj is Japanese)))
        
{
            
return false;
        }
            Japanese japanese = (Japanese)obj;
        
return this.complexionType == japanese.Complexion;
    }

}


class Japanese
{
    
public Japanese(ComplexionType complexionType)
    
{
        
this.complexionType = complexionType;
    }


    
private ComplexionType complexionType;

    
public ComplexionType Complexion
    
{
        
get
        
{
            
return complexionType;
        }

    }

}

  注意到上面,如果能直接引用到japanese.complexionType就好了,不过它不是public所以访问不到。
  但是,如果,我想对同样的Chinese类型做比较,情况就不同了,修改上面的Equals
public override bool Equals(Object obj)
{
    
if (!(obj is Chinese))
    
{
        
return false;
    }

    Chinese chinese 
= (Chinese)obj;
    
return this.complexionType == chinese.complexionType;
}

  虽然,同样定义了Chinese类型的实例,不过这里可以访问到该变量的private部分。

posted on 2005-01-28 03:32  hill  阅读(1293)  评论(0编辑  收藏  举报

导航