給自定義的類做簡單迭代

2022-04-08 21:11:19 字數 974 閱讀 9181

foreach()   如果乙個型別物件,想要在foreach中迴圈遍歷,那麼該類中一定要有getenumerable方法,一般是讓該類實現ienumerable。然後根據返回型別做乙個處理器類。

實現ienumerable介面後,需要實現乙個ienumerator返回值型別的方法.例如下面需要可以遍歷的型別

class student:ienumerable   //

所有實現這個介面的方法都可以進行迭代遍歷

set

}public ienumerator getenumerator()//

返回值為ienumerator型別的

}

這個getenumerator的方法裡直接return new getenumerator(name);    然後我們再寫乙個實現了ienumerator的方法的類。

class

getenumerator : ienumerator

public

object current //

在當前的迭代中

//直接根據下標返回這個元素陣列中的元素

}

public

bool

movenext()

else

}public

void

reset()

}

yield關鍵字,也可以實現物件的foreach遍歷,使用方法是再需要迴圈的類中寫乙個返回值是ienumerble的方法。然後for迴圈.return yield 迴圈得到的值

內部迴圈可以使用兩種方法。

方法一:宣告乙個返回值型別為ienumerable的方法,方法名不固定。當使用這個方法時,foreach(var item in p.這個方法的名字)

方法二:宣告乙個返回值型別為ienumerator的方法,方法名必須為getenumerator。當使用這個方法的時候直接迭代就可以用了。

C 給自定義類定義Hash計算

給子定義類定義hash計算,是的可以使用標準庫的雜湊容器 unordered set 和 unordered map,有多重方法實現 1 給標準庫中的 hash equal to例項化乙個自定義類的型別 2 自定義函式物件 自定義銷售類 class sales data sales data con...

java HashMap用自定義類做key(二)

由於設計的需要,要自己編寫乙個類,作為hashmap中的key。先簡單測試一下,三下五除二,寫了個類,沒想到不行。才知道自己又想當然了。下面是我的程式 class index public string getid string str 123 string str1 new string 123 ...

自定義string類的簡單實現

大家都知道c 中有乙個string類,由於正在學習類,就模仿c 中的string類寫了乙個自定義的string類,下面是自定義string類的簡單實現 fedora下實現 ifndef mystring define mystring include using namespace std clas...