在我的类中实现IEnumerable接口

时间:2013-02-23 17:24:11

标签: c# ienumerable

我有这个类,其中我想实现IEnumerable以便能够使用foreach()。 这是我的代码,我认为我没有正确地做到这一点

public class SearchResult : IEnumerable<SearchResult>
{

    string Name { get; set; }
    int Rating { get; set; }

    public IEnumerator<SearchResult> GetEnumerator()
    {
        return( this );
    }
}

2 个答案:

答案 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 );
}