不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
C#操作符重载示例
编辑:dnawo 日期:2008-08-14
复制内容到剪贴板
程序代码

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();
}
}
}
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 | 引用: 0 | 查看次数: 4499
发表评论
请登录后再发表评论!