using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class People
{
private String _UserName;
private Int32 _Age;
/// <summary>
/// 构造函数
/// </summary>
public People()
{
_UserName = "";
_Age = 0;
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="userName">姓名</param>
/// <param name="age">年龄</param>
public People(String userName, Int32 age)
{
_UserName = userName;
_Age = age;
}
/// <summary>
/// 属性:姓名
/// </summary>
public String UserName
{
get {return _UserName;}
set { _UserName = value; }
}
/// <summary>
/// 属性:年龄
/// </summary>
public Int32 Age
{
get { return _Age; }
set { _Age = value; }
}
/// <summary>
/// 重写 Object.ToString()
/// </summary>
/// <param name="people"></param>
/// <returns></returns>
public override String ToString()
{
return "姓名:" + this.UserName + " 年龄:" + this.Age.ToString();
}
/// <summary>
/// 重载操作符:+
/// </summary>
/// <param name="op1"></param>
/// <param name="op2"></param>
/// <returns></returns>
public static Int32 operator +(People op1, People op2)
{
return op1.Age + op2.Age;
}
/// <summary>
/// 重载操作符:-
/// </summary>
/// <param name="op1"></param>
/// <param name="op2"></param>
/// <returns></returns>
public static Int32 operator -(People op1, People op2)
{
return op1.Age - op2.Age;
}
/// <summary>
/// 重载操作符:>
/// </summary>
/// <param name="op1"></param>
/// <param name="op2"></param>
/// <returns></returns>
public static Boolean operator >(People op1, People op2)
{
return op1.Age > op2.Age;
}
/// <summary>
/// 重载操作符:<
/// </summary>
/// <param name="op1"></param>
/// <param name="op2"></param>
/// <returns></returns>
public static Boolean operator <(People op1, People op2)
{
return op1.Age < op2.Age;
}
/// <summary>
/// 重载操作符:==
/// </summary>
/// <param name="op1"></param>
/// <param name="op2"></param>
/// <returns></returns>
public static Boolean operator ==(People op1, People op2)
{
return op1.Age == op2.Age;
}
/// <summary>
/// 重载操作符:!=
/// </summary>
/// <param name="op1"></param>
/// <param name="op2"></param>
/// <returns></returns>
public static Boolean operator !=(People op1, People op2)
{
return op1.Age != op2.Age;
}
/// <summary>
/// 重写 Object.GetHashCode()
/// </summary>
/// <returns></returns>
public override int GetHashCode()
{
return base.GetHashCode();
}
/// <summary>
/// 重写 Object.Equals(object o)
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public override bool Equals(object obj)
{
return base.Equals(obj);
}
public static void Main()
{
People peo1 = new People("张三", 27);
People peo2 = new People("李四", 25);
Console.WriteLine(peo1.ToString());
Console.WriteLine(peo2.ToString());
Console.WriteLine(peo1 + peo2); //年龄相加:52
Console.WriteLine(peo1 - peo2); //年龄相差:2
Console.WriteLine(peo1 > peo2); //年龄比较:true
Console.WriteLine(peo1 < peo2); //年龄比较:false
Console.WriteLine(peo1 == peo2); //年龄比较:false
Console.WriteLine(peo1 != peo2); //年龄比较:true
Console.ReadLine();
}
}
}说明
·重载操作符必须用关键字static,但不代表它是静态方法;
·有些操作符必须成对的重载,不能单独重载其中一个,例如>和<、==和!=、false和true;
·尽量实现重写 Object.GetHashCode() 和 重写 Object.Equals(object o);
评论(0)
暂无评论。