foreach() 如果乙個型別物件,想要在foreach中迴圈遍歷,那麼該類中一定要有getenumerable方法,一般是讓該類實現ienumerable。然後根據返回型別做乙個處理器類。
實現ienumerable介面後,需要實現乙個ienumerator返回值型別的方法.例如下面需要可以遍歷的型別
class student:ienumerable //所有實現這個介面的方法都可以進行迭代遍歷
set
}public ienumerator getenumerator()//
返回值為ienumerator型別的
}
這個getenumerator的方法裡直接return new getenumerator(name); 然後我們再寫乙個實現了ienumerator的方法的類。
classgetenumerator : 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...