成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#操作符重載學習的一點總結

開發 后端
C#操作符重載是如何實現的呢?C#操作符重載是如何執行的呢?那么本文就向你介紹這方面的內容。

C#操作符重載問題的提出

在面向對象的程序設計中,自己定義一個類,就等于創建了一個新類型。類的實例和變量一樣,可以作為參數傳遞,也可以作為返回類型。

C#操作符重載問題比如對于兩個整型變量,使用算術操作符可以簡便地進行算術運算:

  1. class A  
  2. {  
  3.  public int x;  
  4.  public int y;  
  5.  public int Plus{  
  6.     return x+y;  
  7.   }  

C#操作符重載問題再比如,我們希望將屬于不同類的兩個實例的數據內容相加:

  1. class B  
  2. {  
  3.   public int x;  
  4. }  
  5. class Test  
  6. {  
  7.  public int z;  
  8.  public static void Main{  
  9.     A a=new A();  
  10.     B b=new B();  
  11.     z=a.x+b.x;  
  12.  }  

使用a.x+b.x這種寫法不夠簡潔,也不夠直觀。更為嚴重的問題是,如果類的成員中聲明時使用的不是publixc修飾符的話,這種訪問就是非法的。

我們知道,在C#中,所有數據要么屬于某個類,要么屬于某個類的實例,充分體現了面向對象的思想。因此,為了表達上的方便,人們希望可以重新給已定義的操作符賦予新的含義,在特定的類的實例上進行新的解釋。這就需要通過操作符重載來解決。

使用成員方法重載操作符

C#操作符重載總是在類中進行聲明,并且通過調用類的成員方法來實現。

操作符重載聲明的格式為:

  1. type operator operator-name(formal-param-list) 

C#操作符重載可以實現的有:

  1. + - ! ~ ++ -- true false 
  2.  
  3. * / % & | ^ << >> == != > < >= <= 

但也有一些操作符是不允許進行重載的,如:

  1. =,&&,||,?:,new,typeof,sizeof,is 

C#操作符重載之一元操作符重載

顧名思義,一元操作符重載時操作符只作用于一個對象,此時參數表為空,當前對象作為操作符的單操作數。

下面我們舉一個角色游戲中經常遇到的例子。扮演的角色具有內力、體力、經驗值、剩余體力、剩余內力五個屬性,每當經驗值達到一定程序時,角色便會升級,體力、內力上升,剩余體力和內力補滿。“升級”我們使用重載操作符“++”來實現。

C#操作符重載程序:

  1. using System;  
  2. class Player  
  3. {  
  4.  public int neili;  
  5.  public int tili;  
  6.  public int jingyan;  
  7.  public int neili_r;  
  8.  public int tili_r;  
  9.  public Player()  
  10.  {  
  11.    neili=10;  
  12.    tili=50;  
  13.    jingyan=0;  
  14.    neli_r=50;  
  15.    tili_r=50;  
  16.  }  
  17.  public static Player operator ++(Player p){  
  18.    p.neili=p.neili+50;  
  19.    p.tili=p.tili+100;  
  20.    p.neili_r=p.neili;  
  21.    p.tili_r=p.tili;  
  22.    return p;  
  23.  }  
  24.  public void Show()  
  25.  {  
  26.   Console.WriteLine("Tili:{0}",tili);  
  27.   Console.WriteLine("Neili:{0}",neili);  
  28.   Console.WriteLine("Tili_full:{0}",tili_r);  
  29.   Console.WriteLine("Neili_full:{0}",neili_r);  
  30.  }  
  31. }  
  32. class Test  
  33. {  
  34.  public static void Main(){  
  35.     Player man=new Player();  
  36.     man.Show();  
  37.     man++;  
  38.     Console.WriteLine("Now upgrading...:");  
  39.     man.Show();  
  40.  }  

C#操作符重載之二元操作符重載

大多數情況下我們使用二元操作符重載。這時參數表中有一個參數,當前對象作為該操作符的左操作數,參數作為操作符的右操作數。

下面我們給出二元操作符重載的一個簡單例子,即笛卡兒坐標相加。

C#操作符重載程序:

  1. using System;  
  2. class DKR  
  3. {  
  4.   public int x,y,z;  
  5.   public DKR(int vx,int vy,int vz){  
  6.      x=vx;  
  7.      y=vy;  
  8.      z=vz;  
  9.   }  
  10.   public static DKR operator +(DKR d1,DKR d2)  
  11.   {  
  12.   DKR dkr=new DKR(0,0,0);  
  13.   dkr.x=d1.x+d2.x;  
  14.   dkr.y=d1.y+d2.y;  
  15.   dkr.z=d1.z+d2.z;  
  16.   return dkr;  
  17.   }  
  18. }  //C#操作符重載
  19. class Test  
  20. {  
  21.   publixc statixc void Main(){  
  22.     DKR d1=new DKR(3,2,1);  
  23.     DKR d2=new DKR(0,6,5);  
  24.     DKR d3=d1+d2;  
  25.     Console.WriteLine("The 3d 
  26. location of d3 is:{0},{1},{2}",d3.x,d3.y,d3,z);  
  27.   }  
  28.  

試著編譯、運行該程序,看結果是否與預期一致。

C#操作符重載的基本內容就向你介紹到這里,希望對你了解和學習C#操作符重載有所幫助.

【編輯推薦】

  1. C# 操作XML之建立Xml對象淺析
  2. C# 操作XML之讀取Xml淺析
  3. C# 操作XML的全過程實例淺析
  4. C#操作xml文件實例詳解
  5. C#操作XML文件學習綜合體會
責任編輯:仲衡 來源: bianceng.cn
相關推薦

2009-08-18 17:34:25

C#操作符重載應用

2009-08-18 18:06:54

C#操作符重載

2009-08-19 16:59:25

C# 操作符

2009-08-18 17:55:20

C#操作符重載

2009-08-18 17:42:12

C#操作符重載

2009-08-14 10:16:57

C#運算符重載

2009-08-19 17:13:15

C# 操作符基礎知識

2009-08-28 16:30:24

C#線程

2009-08-19 11:23:12

C#操作Word

2009-07-14 18:34:22

Jython操作符重載

2009-08-19 17:26:28

C# 操作符

2009-08-18 13:06:17

C#枚舉類型

2009-08-19 17:20:22

C# 操作符

2009-08-12 11:20:51

C#運算符重載

2009-09-09 10:53:25

C# MessageB

2009-08-12 12:46:11

C#運算符重載

2009-08-13 17:52:13

C#構造函數

2009-08-27 17:50:09

interface接口

2010-02-05 10:30:02

C++操作符重載

2010-02-03 10:23:47

C++操作符重載
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 先锋资源网站 | 欧美日韩亚洲国产 | 日韩免费福利视频 | 三级黄色大片网站 | 日韩有码在线观看 | 成人精品啪啪欧美成 | 色秀网站 | 一区二区视频在线 | 亚洲a毛片 | 黄色网页在线观看 | 亚洲美女在线一区 | 亚洲劲爆av | 国产一区二区三区久久久久久久久 | 中文字幕在线观看一区二区 | 国产日韩欧美一区二区 | 国产成人久久久 | 日韩欧美国产精品 | 国产激情视频网 | 国产精品免费观看视频 | 一区二区三区国产精品 | 天堂在线www| 午夜a区| 欧美一区二区激情三区 | 欧美日韩免费 | 日p视频免费看 | 浴室洗澡偷拍一区二区 | 不卡一区二区三区四区 | 欧美高清视频 | 中文字幕成人免费视频 | 狠狠躁夜夜躁人人爽天天高潮 | 亚洲精品美女在线观看 | 欧美精品在线看 | 日本福利视频 | 国产精品自产拍 | 美日韩免费视频 | 国产综合精品 | 国产在线精品一区二区 | 久久一级| 亚洲免费在线观看 | 在线看无码的免费网站 | 不卡在线一区 |