zoukankan      html  css  js  c++  java
  • 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部分。
  • 相关阅读:
    泛海精灵Alpha阶段回顾
    [Scrum]1.6
    【Scrum】1.5
    泛海精灵 Beta计划 (草案)
    【scrum】1.7
    学术搜索的Bug
    Linux下查看文件和文件夹大小
    求7的34次方
    去除给定的字符串中左边、右边、中间的所有空格的实现
    身份证18位验证
  • 原文地址:https://www.cnblogs.com/hill/p/98513.html
Copyright © 2011-2022 走看看