温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-08-25 17:52:49 来源:亿速云 阅读:196 作者:chen 栏目:编程语言

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

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#运算符重载的实例介绍”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI