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:作者: 许庭洲 时间: 2012-7-9 10:26
if (g1.Equals(g2))//用if语句判断两个对象的引用是否相等,采用了Equals函数判断g1是否等于g2
Console.WriteLine(true);//若相等,返回true
else
Console.WriteLine(false);//若不相等,返回false作者: 古古头 时间: 2012-7-9 19:02
你需要在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;
}
} 作者: 孙宁宇 时间: 2012-7-9 19:09
引用类型的使用ReferenceEquals()方法判断
这个是专门用于引用类型的