C#操作符重载问题的提出
公司主营业务:网站建设、成都做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出新郑免费做网站回馈大家。
在面向对象的程序设计中,自己定义一个类,就等于创建了一个新类型。类的实例和变量一样,可以作为参数传递,也可以作为返回类型。
C#操作符重载问题比如对于两个整型变量,使用算术操作符可以简便地进行算术运算:
- class A
- {
- public int x;
- public int y;
- public int Plus{
- return x+y;
- }
- }
C#操作符重载问题再比如,我们希望将属于不同类的两个实例的数据内容相加:
- class B
- {
- public int x;
- }
- class Test
- {
- public int z;
- public static void Main{
- A a=new A();
- B b=new B();
- z=a.x+b.x;
- }
- }
使用a.x+b.x这种写法不够简洁,也不够直观。更为严重的问题是,如果类的成员中声明时使用的不是publixc修饰符的话,这种访问就是非法的。
我们知道,在C#中,所有数据要么属于某个类,要么属于某个类的实例,充分体现了面向对象的思想。因此,为了表达上的方便,人们希望可以重新给已定义的操作符赋予新的含义,在特定的类的实例上进行新的解释。这就需要通过操作符重载来解决。
使用成员方法重载操作符
C#操作符重载总是在类中进行声明,并且通过调用类的成员方法来实现。
操作符重载声明的格式为:
- type operator operator-name(formal-param-list)
C#操作符重载可以实现的有:
- + - ! ~ ++ -- true false
- * / % & | ^ << >> == != > < >= <=
但也有一些操作符是不允许进行重载的,如:
- =,&&,||,?:,new,typeof,sizeof,is
C#操作符重载之一元操作符重载
顾名思义,一元操作符重载时操作符只作用于一个对象,此时参数表为空,当前对象作为操作符的单操作数。
下面我们举一个角色游戏中经常遇到的例子。扮演的角色具有内力、体力、经验值、剩余体力、剩余内力五个属性,每当经验值达到一定程序时,角色便会升级,体力、内力上升,剩余体力和内力补满。“升级”我们使用重载操作符“++”来实现。
C#操作符重载程序:
- using System;
- class Player
- {
- public int neili;
- public int tili;
- public int jingyan;
- public int neili_r;
- public int tili_r;
- public Player()
- {
- neili=10;
- tili=50;
- jingyan=0;
- neli_r=50;
- tili_r=50;
- }
- public static Player operator ++(Player p){
- p.neili=p.neili+50;
- p.tili=p.tili+100;
- p.neili_r=p.neili;
- p.tili_r=p.tili;
- return p;
- }
- public void Show()
- {
- Console.WriteLine("Tili:{0}",tili);
- Console.WriteLine("Neili:{0}",neili);
- Console.WriteLine("Tili_full:{0}",tili_r);
- Console.WriteLine("Neili_full:{0}",neili_r);
- }
- }
- class Test
- {
- public static void Main(){
- Player man=new Player();
- man.Show();
- man++;
- Console.WriteLine("Now upgrading...:");
- man.Show();
- }
- }
C#操作符重载之二元操作符重载
大多数情况下我们使用二元操作符重载。这时参数表中有一个参数,当前对象作为该操作符的左操作数,参数作为操作符的右操作数。
下面我们给出二元操作符重载的一个简单例子,即笛卡儿坐标相加。
C#操作符重载程序:
- using System;
- class DKR
- {
- public int x,y,z;
- public DKR(int vx,int vy,int vz){
- x=vx;
- y=vy;
- z=vz;
- }
- public static DKR operator +(DKR d1,DKR d2)
- {
- DKR dkr=new DKR(0,0,0);
- dkr.x=d1.x+d2.x;
- dkr.y=d1.y+d2.y;
- dkr.z=d1.z+d2.z;
- return dkr;
- }
- } //C#操作符重载
- class Test
- {
- publixc statixc void Main(){
- DKR d1=new DKR(3,2,1);
- DKR d2=new DKR(0,6,5);
- DKR d3=d1+d2;
- Console.WriteLine("The 3d
- location of d3 is:{0},{1},{2}",d3.x,d3.y,d3,z);
- }
- }
试着编译、运行该程序,看结果是否与预期一致。
C#操作符重载的基本内容就向你介绍到这里,希望对你了解和学习C#操作符重载有所帮助.
文章标题:C#操作符重载学习的一点总结
网页地址:http://www.csdahua.cn/qtweb/news45/536795.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网