1

foreach() を使用できるように IEnumerable を実装したいこのクラスがあります。これが私のコードです。私は正しくやっていないと思います

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 ...
}

次に、メソッドに次の小さな変更を加えることができます (return の代わりに yield return を使用します)。

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