我有这个类,其中我想实现IEnumerable以便能够使用foreach()。 这是我的代码,我认为我没有正确地做到这一点
public class SearchResult : IEnumerable<SearchResult>
{
string Name { get; set; }
int Rating { get; set; }
public IEnumerator<SearchResult> GetEnumerator()
{
return( this );
}
}
答案 0 :(得分:4)
你可以这样做:
public IEnumerator<SearchResult> GetEnumerator()
{
yield return this;
}
然而,像这样的对象实现IEnumerable<T>
并以单元素序列返回自身是不寻常的。
您可能想要创建一个实用工具方法:
public static IEnumerable<T> ToSequence<T>(T instance)
{
reutrn new[] { instance };
}
答案 1 :(得分:0)
如果你真的发誓你需要这样做:
SearchResult justOne = ... blah ...;
foreach (SearchResult eachOne in justOne) {
... blah ...
}
然后你可以对你的方法做一个小修改(使用yield return而不是return):
public IEnumerator<SearchResult> GetEnumerator()
{
yield return( this );
}