C#操作符重载特点是什么呢?
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了雨湖免费建站欢迎大家使用!
细心的朋友可能发现,C#虽然可以重载操作符,但和C++比较起来,却有很大的不同。定义的时候重载操作符方法必须是static,而且至少有一个参数(一目和二目分别是一个和两个),C#和C++比起来,最重要的特征是:<、>;==、!=;true、false必须成对出现,即重载了“<”就必须重载“>”,重载了“==”就必须重载“!=”,重载了“true”就必须重载“false”;另外,还必须实现基类object的两个虚方法:GetHashCode()和Equals(object obj)。
以下是C#操作符重载特点实例程序代码,有些地方写得不完善,只能说仅仅说明了问题,不对之处请指教:
- using System;
- using System.Xml;
- namespace ConsoleApplication8
- {
- ///
- /// 姓名类
- ///
- class Namer
- //C#操作符重载特点实例
- {
- private string FirstName;
- private string LastName;
- public Namer()
- {
- this.Init(null,null);
- }
- public Namer(string fn,string ln)
- {
- this.Init(fn,ln);
- }
- //C#操作符重载特点实例
- private void Init(string fn,string ln)
- {
- this.FirstName=fn;
- this.LastName=ln;
- }
- ///
- /// 重载运算符true
- ///
- ///
- ///
如果姓名中姓或名有一个为空,就返回假 - public static bool operator true(Namer n)
- {
- if(n.FirstName==null || n.LastName==null)
- return false;
- else
- return true;
- }
- ///
- /// 重载运算符false
- ///
- ///
- ///
- public static bool operator false(Namer n)
- {
- if(n.FirstName==null || n.LastName==null)
- return false;
- else
- //C#操作符重载特点实例
- return true;
- }
- ///
- /// 重载运算符==
- ///
- ///
- ///
- ///
- public static bool operator ==(Namer n1,Namer n2)
- {
- if(n1.FirstName==n2.FirstName
- && n1.LastName==n2.LastName)
- return true;
- else
- //C#操作符重载特点实例
- return false;
- }
- ///
- /// 重载运算符!=
- ///
- ///
- ///
- ///
- public static bool operator !=(Namer n1,Namer n2)
- {
- if(n1.FirstName!=n2.FirstName || n1.LastName !=n2.LastName)
- return true;
- else
- return false;
- }
- ///
- /// 重载运算符>
- ///
- ///
- ///
- ///
- //C#操作符重载特点实例
- public static bool operator >(Namer n1,Namer n2)
- {
- return (n1.FirstName.CompareTo(n2.FirstName)>0
- && n1.LastName.CompareTo(n2.LastName)>0);
- }
- ///
- /// 重写方法,必须有,后面的111是乱加的,你也可以写其它的
- ///
- ///
- public override int GetHashCode()
- {
- //C#操作符重载特点实例
- return base.GetHashCode()*111;
- }
- ///
- /// 重写方法,必须有
- ///
- ///
- ///
- public override bool Equals(object obj)
- {
- return base.Equals (obj);
- }
- ///
- /// 重写方法,必须有
- ///
- ///
- public override string ToString()
- {
- return "姓:"+this.FirstName+" 名:"+this.LastName;
- }
- public static void Main()
- {
- Namer n1=new Namer("li","zanhong");
- Namer n2=new Namer("ahang","aan");
- //Namer n2=new Namer("li","zanhong");
- if(n1==n2)
- Console.WriteLine("一样的名字");
- else
- //C#操作符重载特点实例
- Console.WriteLine("不一样的名字");
- /////////////////////////////////////
- if(n1!=n2)
- Console.WriteLine("不一样的名字成立");
- else
- Console.WriteLine("同样的名字成立");
- /////////////////////////////////////
- if(n1>n2)
- Console.WriteLine(n1.ToString()+">"+n2.ToString());
- else if(n1
- Console.WriteLine(n1.ToString()+"<"+n2.ToString());
- else
- Console.WriteLine("没有正确比较");
- Console.ReadLine();
- }
- }
- }
C#操作符重载特点实例的基本内容就向你介绍到这里,希望对你了解和学习C#操作符重载有所帮助。
【编辑推荐】
本文题目:C#操作符重载特点实例浅析
分享链接:http://www.shufengxianlan.com/qtweb/news22/488072.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联