1

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

public class SearchResult : IEnumerable<SearchResult>
{

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

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

2 回答 2

4

你可以这样做:

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

然而,像这样的对象IEnumerable<T>以单元素序列实现并返回自身是不寻常的。

您可能想要创建一个实用程序方法:

public static IEnumerable<T> ToSequence<T>(T instance)
{
    reutrn new[] { instance };
}
于 2013-02-23T17:28:38.667 回答
0

如果你真的发誓你需要这样做:

SearchResult justOne = ... blah ...;
foreach (SearchResult eachOne in justOne) {
   ... blah ...
}

然后你可以对你的方法做这个小的修改(使用yield return而不是return):

public IEnumerator<SearchResult> GetEnumerator()
{
    yield return( this );
}
于 2013-02-23T17:29:39.210 回答