C#運算符重載實例淺析
作者:佚名
C#運算符重載實例向你介紹了在實際操作中C#運算符重載的實例應用情況。
C#運算符重載實例是掌握C#運算符重載的有效方法,那么就讓我們通過一個實際的例子來介紹。其中重載==,!=,Equal,GetHashCode函數(shù)。
- 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()
- {
- //在這里使用字符串數(shù)組的hashcode,避免自己完成一個算法
- return arr.GetHashCode();
- }
- public Record(int count)
- {
- if (count < 1)
- {
- throw new Exception("數(shù)組的長度不能小于1");
- }
- arr = new string[count];
- }
- public static bool operator ==(Record rec1, Record rec2)
- {
- //注意我們調(diào)用Equals來判斷是否相等。而不是在自己的函數(shù)中判斷。
- //這是因為如果在自己的函數(shù)中判斷。
- //比如有rec2=null的情況。如果是這種情況。我們要判斷if(rec2==null){…}。
- //其中rec2==null也是調(diào)用一個等號運算符,這里面有一個遞歸的過程,造成了死循環(huán)。
- 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#運算符重載實例的基本情況就向你介紹到這里,希望對你有所幫助。
【編輯推薦】
責任編輯:仲衡
來源:
中國自學編程網(wǎng)