• 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部分。
  • 相关阅读:
    WCF添加服务失败。服务元数据可能无法访问。请确保服务正在运行并且正在公开元数据。
    【C#】 实现WinForm中只能启动一个实例
    centos7防火墙问题
    ftp搭建记录
    centos7常用命令
    RocketMQ部署
    mongedb主从
    redis 主从复制+读写分离+哨兵
    keepalive+nginx
    分布架构分析
  • 原文地址:https://www.cnblogs.com/hill/p/98513.html
Copyright © 2020-2023  润新知