A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class Test1
    {
        static void Main()
        {
            Goods g1 = new Num_Goods(3);
            g1.UnitPrice = 10;
            
            //g1.GetTotalPrice();
            Console.WriteLine(g1);
            
            Goods g2 = new Num_Goods(3);
            g2.UnitPrice = 10;
            if (g1.Equals(g2))//判断两个对象的引用是否相等
                Console.WriteLine(true);
            else
                Console.WriteLine(false);

        }
    }
   abstract class Goods
    {
        double unitPrice;

        public double UnitPrice
        {
            get { return unitPrice; }
            set { unitPrice = value; }
        }
        public Goods(double unitPrice)
        {
            this.unitPrice = unitPrice;
        }
        public Goods() { }
        public abstract double GetTotalPrice();//实现多态
    }
    class Num_Goods:Goods
    {
        int num;

        public int Num
        {
            get { return num; }
            set { num = value; }
        }
        public Num_Goods(int num) { this.num = num; }
        public override double GetTotalPrice()
        {
           return num*UnitPrice;
        }
        public override string ToString()//将对象以字符串的形式返回
        {
            return UnitPrice+" "+num+" "+GetTotalPrice();
        }

    }

为什么判断不出来啊啊 啊???:dizzy:

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

3 个回复

倒序浏览
if (g1.Equals(g2))//用if语句判断两个对象的引用是否相等,采用了Equals函数判断g1是否等于g2
        Console.WriteLine(true);//若相等,返回true
else
       Console.WriteLine(false);//若不相等,返回false

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
你需要在Num_Goods类中重写Object的Equals方法,代码如下:
class Num_Goods:Goods
    {
        int num;

        public int Num
        {
            get { return num; }
            set { num = value; }
        }
        public Num_Goods(int num) { this.num = num; }
        public override double GetTotalPrice()
        {
           return num*UnitPrice;
        }
        public override string ToString()//将对象以字符串的形式返回
        {
            return UnitPrice+" "+num+" "+GetTotalPrice();
        }
      public override bool Equals(Object o)
      {
         Num_Goods ng = o as Num_Goos;
         return ng==null?false:ng.Num==Num && ng.UnitPrice==UnitPrice;
      }
    }

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
引用类型的使用ReferenceEquals()方法判断
这个是专门用于引用类型的

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马