単一の項目をIEnumerableとして渡す 質問する

単一の項目をIEnumerableとして渡す 質問する

Tパラメータを必要とするメソッドに型の単一項目を渡す一般的な方法はありますかIEnumerable<T>? 言語は C#、フレームワーク バージョン 2.0 です。

現在、私はヘルパー メソッドを使用しています (.Net 2.0 なので、LINQ に似たキャスト/投影ヘルパー メソッドが多数あります) が、これはばかげているように思えます。

public static class IEnumerableExt
{
    // usage: IEnumerableExt.FromSingleItem(someObject);
    public static IEnumerable<T> FromSingleItem<T>(T item)
    {
        yield return item; 
    }
}

もちろん、他の方法としては、List<T>または を作成して値を設定しArray、 の代わりにそれを渡すことですIEnumerable<T>

[編集]拡張メソッドとしては、次のような名前が付けられる場合があります。

public static class IEnumerableExt
{
    // usage: someObject.SingleItemAsEnumerable();
    public static IEnumerable<T> SingleItemAsEnumerable<T>(this T item)
    {
        yield return item; 
    }
}

何か見逃しているのでしょうか?

[編集2] @Peter が以下のコメントで示唆したように、主に簡潔さの点から、この拡張メソッドに最適な名前が見つかりましたsomeObject.Yield()。そのため、この名前を XML コメントとともにここに示します。誰でも使用できます。

public static class IEnumerableExt
{
    /// <summary>
    /// Wraps this object instance into an IEnumerable&lt;T&gt;
    /// consisting of a single item.
    /// </summary>
    /// <typeparam name="T"> Type of the object. </typeparam>
    /// <param name="item"> The instance that will be wrapped. </param>
    /// <returns> An IEnumerable&lt;T&gt; consisting of a single item. </returns>
    public static IEnumerable<T> Yield<T>(this T item)
    {
        yield return item;
    }
}

ベストアンサー1

そうですね、メソッドが を期待している場合は、IEnumerableたとえ要素が 1 つしか含まれていなくても、リストを渡す必要があります。

通過

new[] { item }

議論は十分だと思う

おすすめ記事