C#运算符重载的实例介绍

本篇内容介绍了“C#运算符重载的实例介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

垦利网站建设公司创新互联,垦利网站设计制作,有大型网站制作公司丰富经验。已为垦利1000多家提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的垦利做网站的公司定做!

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

public class Record   {    public string[] arr = null;   public bool hasEqual = false;   //重载一个下标运算符号   public string this[int index]   {   get   {   return arr[index];   }   set   {   arr[index] = value;   }   }   public override int GetHashCode()   {    //在这里使用字符串数组的hashcode,避免自己完成一个算法    return arr.GetHashCode();   }   public Record(int count)   {   if (count < 1)   {   throw new Exception("数组的长度不能小于1");   }   arr = new string[count];   }   public static bool operator ==(Record rec1, Record rec2)   {    //注意我们调用Equals来判断是否相等。而不是在自己的函数中判断。//这是因为如果在自己的函数中判断。//比如有rec2=null的情况。如果是这种情况。我们要判断if(rec2==null){…}。//其中rec2==null也是调用一个等号运算符,这里面有一个递归的过程,造成了死循环。    return Object.Equals(rec1, rec2);   }   public static bool operator !=(Record rec1, Record rec2)   {   return !Object.Equals(rec1, rec2);   }   public override bool Equals(object obj)   {   //判断与之比较的类型是否为null。这样不会造成递归的情况   if (obj == null)   return false;   if (GetType() != obj.GetType())   return false;   Record rec = (Record)obj;   int count = rec.arr.Length;   for (int i = 0; i < count; i++)   {   if (this.arr[i] != rec.arr[i])   {   return false;   }   }   return true;   }   }

“C#运算符重载的实例介绍”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


网页标题:C#运算符重载的实例介绍
文章出自:http://pwwzsj.com/article/jcocpg.html