SORU
16 EKİM 2009, Cuma


IEnumerable< tek bir madde geçiyor;T>

Ortak bir yol türü IEnumerable<T> bir parametre bekler yöntemi 4 ** tek bir öğeye geçmek var mı? Dil# çerçeve sürüm 2.0 C.

Ben şu anda bir yardımcı yöntem (. kullanarak Net döküm/bir sürü yardımcı yöntemler ETMENİZ benzer çıkıntı var 2.0,), ama bu sadece aptalca görünüyor:

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

Diğer taraftan elbette ve List<T> Array oluşturmak ve doldurmak için olurdu ve IEnumerable<T> yerine geçmek.

[Düzenle]Bir uzantı yöntemi olarak adlandırılmış olabilir:

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

Bir şey mi kaçırıyorum?

[Edit2]Bulduk someObject.Yield() (@Peter'ın dediği açıklamaları aşağıda) en iyi isim bu uzatma yöntemi, esas kısalık, öyle işte birlikte XML açıklama isteyen için yakala:

public static class IEnumerableExt
{
    /// <summary>
    /// Wraps this object instance into an IEnumerable<T>
    /// 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<T> consisting of a single item. </returns>
    public static IEnumerable<T> Yield<T>(this T item)
    {
        yield return item;
    }
}

CEVAP
22 Aralık 2009, Salı


C# 3.0 Sistem kullanabilir.Seri.Sınıf sayısız:

// using System.Linq

Enumerable.Repeat(item, 1);

Bu senin tek öğe içeren yeni bir IEnumerable oluşturur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 3dmmfavs

    3dmmfavs

    29 Kasım 2009
  • ASUS Campus Life

    ASUS Campus

    18 Mart 2013
  • Xbox

    Xbox

    1 Kasım 2005