自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#操作符重載特點實例淺析

開發(fā) 后端
C#操作符重載有什么特點呢?C#操作符重載實現(xiàn)的時候有什么突出的地方么?那么本文就向你介紹C#操作符重載的內(nèi)容,希望對你有所幫助。

C#操作符重載特點是什么呢?

細心的朋友可能發(fā)現(xiàn),C#雖然可以重載操作符,但和C++比較起來,卻有很大的不同。定義的時候重載操作符方法必須是static,而且至少有一個參數(shù)(一目和二目分別是一個和兩個),C#和C++比起來,最重要的特征是:<、>;==、!=;true、false必須成對出現(xiàn),即重載了“<”就必須重載“>”,重載了“==”就必須重載“!=”,重載了“true”就必須重載“false”;另外,還必須實現(xiàn)基類object的兩個虛方法:GetHashCode()和Equals(object obj)。

以下是C#操作符重載特點實例程序代碼,有些地方寫得不完善,只能說僅僅說明了問題,不對之處請指教:

  1. using System;   
  2.  
  3. using System.Xml;   
  4.  
  5. namespace ConsoleApplication8   
  6.  
  7. {   
  8.  
  9. /// <summary>   
  10.  
  11. /// 姓名類   
  12.  
  13. /// </summary>   
  14.  
  15. class Namer   
  16.  //C#操作符重載特點實例
  17. {   
  18.  
  19. private string FirstName;   
  20.  
  21. private string LastName;   
  22.  
  23. public Namer()   
  24.  
  25. {   
  26.  
  27. this.Init(null,null);   
  28.  
  29. }   
  30.  
  31. public Namer(string fn,string ln)   
  32.  
  33. {   
  34.  
  35. this.Init(fn,ln);   
  36.  
  37. }   
  38.  //C#操作符重載特點實例
  39. private void Init(string fn,string ln)   
  40.  
  41. {   
  42.  
  43. this.FirstName=fn;   
  44.  
  45. this.LastName=ln;   
  46.  
  47. }   
  48.  
  49. /// <summary>   
  50.  
  51. /// 重載運算符true   
  52.  
  53. /// </summary>   
  54.  
  55. /// <param name="n"></param>   
  56.  
  57. /// <returns>如果姓名中姓或名有一個為空,就返回假</returns>   
  58.  
  59. public static bool operator true(Namer n)   
  60.  
  61. {   
  62.  
  63. if(n.FirstName==null || n.LastName==null)   
  64.  
  65. return false;   
  66.  
  67. else   
  68.  
  69. return true;   
  70.  
  71. }   
  72.  
  73. /// <summary>   
  74.  
  75. /// 重載運算符false   
  76.  
  77. /// </summary>   
  78.  
  79. /// <param name="n"></param>   
  80.  
  81. /// <returns></returns>   
  82.  
  83. public static bool operator false(Namer n)   
  84.  
  85. {   
  86.  
  87. if(n.FirstName==null || n.LastName==null)   
  88.  
  89. return false;   
  90.  
  91. else   
  92.  //C#操作符重載特點實例
  93. return true;   
  94.  
  95. }   
  96.  
  97. /// <summary>   
  98.  
  99. /// 重載運算符==   
  100.  
  101. /// </summary>   
  102.  
  103. /// <param name="n1"></param>   
  104.  
  105. /// <param name="n2"></param>   
  106.  
  107. /// <returns></returns>   
  108.  
  109. public static bool operator ==(Namer n1,Namer n2)   
  110.  
  111. {   
  112.  
  113. if(n1.FirstName==n2.FirstName 
  114. && n1.LastName==n2.LastName)   
  115.  
  116. return true;   
  117.  
  118. else   
  119.  //C#操作符重載特點實例
  120. return false;   
  121.  
  122. }   
  123. /// <summary>   
  124.  
  125. /// 重載運算符!=   
  126.  
  127. /// </summary>   
  128.  
  129. /// <param name="n1"></param>   
  130.  
  131. /// <param name="n2"></param>   
  132.  
  133. /// <returns></returns>   
  134.  
  135. public static bool operator !=(Namer n1,Namer n2)   
  136.  
  137. {   
  138.  
  139. if(n1.FirstName!=n2.FirstName || n1.LastName !=n2.LastName)   
  140.  
  141. return true;   
  142.  
  143. else   
  144.  
  145. return false;   
  146.  
  147. }   
  148.  
  149. /// <summary>   
  150.  
  151. /// 重載運算符>   
  152.  
  153. /// </summary>   
  154.  
  155. /// <param name="n1"></param>   
  156.  
  157. /// <param name="n2"></param>   
  158.  
  159. /// <returns></returns>   
  160.  //C#操作符重載特點實例
  161. public static bool operator >(Namer n1,Namer n2)   
  162.  
  163. {   
  164.  
  165. return (n1.FirstName.CompareTo(n2.FirstName)>0 
  166. && n1.LastName.CompareTo(n2.LastName)>0);   
  167.  
  168. }   
  169.  
  170. /// <summary>   
  171.  
  172. /// 重寫方法,必須有,后面的111是亂加的,你也可以寫其它的   
  173.  
  174. /// </summary>   
  175.  
  176. /// <returns></returns>   
  177.  
  178. public override int GetHashCode()   
  179.  
  180. {   
  181.  //C#操作符重載特點實例
  182. return base.GetHashCode()*111;   
  183.  
  184. }   
  185.  
  186. /// <summary>   
  187.  
  188. /// 重寫方法,必須有   
  189.  
  190. /// </summary>   
  191.  
  192. /// <param name="obj"></param>   
  193.  
  194. /// <returns></returns>   
  195.  
  196. public override bool Equals(object obj)   
  197.  
  198. {   
  199.  
  200. return base.Equals (obj);   
  201.  
  202. }   
  203.  
  204. /// <summary>   
  205.  
  206. /// 重寫方法,必須有   
  207.  
  208. /// </summary>   
  209.  
  210. /// <returns></returns>   
  211.  
  212. public override string ToString()   
  213.  
  214. {   
  215.  
  216. return "姓:"+this.FirstName+" 名:"+this.LastName;   
  217.  
  218. }   
  219.  
  220. public static void Main()   
  221.  
  222. {   
  223.  
  224. Namer n1=new Namer("li","zanhong");   
  225.  
  226. Namer n2=new Namer("ahang","aan");   
  227.  
  228. //Namer n2=new Namer("li","zanhong");   
  229.  
  230. if(n1==n2)   
  231.  
  232. Console.WriteLine("一樣的名字");   
  233.  
  234. else   
  235.  //C#操作符重載特點實例
  236. Console.WriteLine("不一樣的名字");   
  237.  
  238. /////////////////////////////////////   
  239.  
  240. if(n1!=n2)   
  241.  
  242. Console.WriteLine("不一樣的名字成立");   
  243.  
  244. else   
  245.  
  246. Console.WriteLine("同樣的名字成立");   
  247.  
  248. /////////////////////////////////////   
  249.  
  250. if(n1>n2)   
  251.  
  252. Console.WriteLine(n1.ToString()+">"+n2.ToString());   
  253.  
  254. else if(n1<n2)   
  255.  
  256. Console.WriteLine(n1.ToString()+"<"+n2.ToString());   
  257.  
  258. else   
  259.  
  260. Console.WriteLine("沒有正確比較");   
  261.  
  262. Console.ReadLine();   
  263.  
  264. }   
  265.  
  266. }   
  267.  

C#操作符重載特點實例的基本內(nèi)容就向你介紹到這里,希望對你了解和學(xué)習C#操作符重載有所幫助。

【編輯推薦】

  1. C# 操作XML的全過程實例淺析
  2. C#操作xml文件實例詳解
  3. C#操作XML文件學(xué)習綜合體會
  4. C#操作符重載學(xué)習的一點總結(jié)
  5. C#操作符重載應(yīng)用的一點體會
責任編輯:仲衡 來源: host01.com
相關(guān)推薦

2009-08-18 18:06:54

C#操作符重載

2009-08-12 10:27:12

C#運算符重載運算符重載實例

2009-08-19 17:26:28

C# 操作符

2009-08-19 17:20:22

C# 操作符

2009-08-18 17:55:20

C#操作符重載

2009-07-14 18:34:22

Jython操作符重載

2009-08-19 17:38:17

C# 操作符分類

2009-08-12 12:46:11

C#運算符重載

2009-08-18 17:20:17

C#操作符重載

2009-08-18 17:34:25

C#操作符重載應(yīng)用

2010-01-19 13:32:20

C++操作符

2009-08-12 10:56:47

C#運算符重載C#運算符重載實例

2009-08-18 13:49:21

C# 操作Excel

2009-08-27 13:05:06

C#接口特點C#接口實例

2010-02-05 10:30:02

C++操作符重載

2009-09-15 17:16:58

LINQ查詢操作符

2009-07-31 16:00:30

C#函數(shù)重載

2010-02-03 10:23:47

C++操作符重載

2009-08-18 16:04:12

C# 操作Excel

2009-08-19 09:42:52

C#操作Word書簽
點贊
收藏

51CTO技術(shù)棧公眾號