using; namespace
return!(f1 == f2);
}
//判断是否为同⼀类型,再执⾏委托
public override bool Equals(object obj)
{
if(!(obj is Fraction))//检查对象运⾏时类型
return false;
return this==(Fraction)obj;//⽐较this == obj ,⽐较前先将obj强制转换为Fraction
}
public override string ToString()//复写Tostring
{
return String.Format("({0},{1})", num1, num2);
}
}
public class Tester
{
public void Run()
{
Fraction f1 =new Fraction(3,4);
Console.WriteLine("f1:{0}",f1.ToString());
Fraction f2 =new Fraction(5,6);
Console.WriteLine("f2:{0}",f2.ToString());
Fraction f3 = f1 + f2;
Console.WriteLine("f3:{0}",f3.ToString());
Fraction f4 =new Fraction(8,10);
if(f1==f2)
Console.WriteLine("f1:{0}==f2:{1}",f1.ToString(),f2.ToString());
else
Console.WriteLine("f1:{0}!=f2:{1}", f1.ToString(), f2.ToString());
if(f4.Equals(f3))
Console.WriteLine("f4:{0}Equalsf3:{1}",f4.ToString(),f3.ToString());
}
}
class Program
{
static void Main(string[] args)
{
Tester t =new Tester();
t.Run();
}
}
}
注意:
1、如果重载了等于(==)运算符,那么也必须重载不等(!=)运算符,类似地有⼩于(<)和⼤于(>)必须成对,⼩于等于(<=)和⼤于等于(>=)必须成对。
2、如果重载了等于运算符,那么建议也要重载Equals()⽅法。
3、⽐较运算符必须返回bool类型的值,这是与其他算术运算符的根本区别。
4、运算符只能采⽤值参数,不能采⽤ref 或out 参数。
2、转换运算符
implicit 和 explicit通常叫作转换运算符,当转换能够成功并且不会发⽣信息丢失时,使⽤关键字implicit;如果存在丢失信息的风险,则需要使⽤关键字explicit。
语法:
public static implicit operator 转换运算符的⽬标类型(参数输⼊类型 参数名)
public static explicit operator 转换运算符的⽬标类型(参数输⼊类型 参数名)
using; namespace
equals不等于using;
using;
using; namespace
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论