C#运算符重载实例浅析

C#运算符重载实例是掌握C#运算符重载的有效方法,那么就让我们通过一个实际的例子来介绍。其中重载==,!=,Equal,GetHashCode函数。

 
 
 
  1. public class Record   
  2. {   
  3.  
  4. public string[] arr = null;   
  5. public bool hasEqual = false;   
  6. //重载一个下标运算符号   
  7. public string this[int index]   
  8. {   
  9. get   
  10. {   
  11. return arr[index];   
  12. }   
  13. set   
  14. {   
  15. arr[index] = value;   
  16. }   
  17. }   
  18. public override int GetHashCode()   
  19. {   
  20.  
  21. //在这里使用字符串数组的hashcode,避免自己完成一个算法   
  22.  
  23. return arr.GetHashCode();   
  24. }   
  25. public Record(int count)   
  26. {   
  27. if (count < 1)   
  28. {   
  29. throw new Exception("数组的长度不能小于1");   
  30. }   
  31. arr = new string[count];   
  32. }   
  33. public static bool operator ==(Record rec1, Record rec2)   
  34. {   
  35.  
  36. //注意我们调用Equals来判断是否相等。而不是在自己的函数中判断。
  37. //这是因为如果在自己的函数中判断。
  38. //比如有rec2=null的情况。如果是这种情况。我们要判断if(rec2==null){…}。
  39. //其中rec2==null也是调用一个等号运算符,这里面有一个递归的过程,造成了死循环。   
  40.  
  41. return Object.Equals(rec1, rec2);   
  42. }   
  43. public static bool operator !=(Record rec1, Record rec2)   
  44. {   
  45. return !Object.Equals(rec1, rec2);   
  46. }   
  47. public override bool Equals(object obj)   
  48. {   
  49. //判断与之比较的类型是否为null。这样不会造成递归的情况   
  50. if (obj == null)   
  51. return false;   
  52. if (GetType() != obj.GetType())   
  53. return false;   
  54. Record rec = (Record)obj;   
  55. int count = rec.arr.Length;   
  56. for (int i = 0; i < count; i++)   
  57. {   
  58. if (this.arr[i] != rec.arr[i])   
  59. {   
  60. return false;   
  61. }   
  62. }   
  63. return true;   
  64. }   

C#运算符重载实例的基本情况就向你介绍到这里,希望对你有所帮助。

新闻标题:C#运算符重载实例浅析
网站路径:http://www.shufengxianlan.com/qtweb/news40/353040.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联