Aracılığıyla paylaş


Generics (C# Programlama Kılavuzu) Giriº

Generic Sýnýflar ve yöntemler çalışmalarında, tür güvenliği ve verimliliği genel olmayan karşılıkları edilemez bir şekilde birleştirin.Generics, Koleksiyonlar ve üzerlerinde çalışmak yöntemleriyle en sık kullanılır.2.0 Sürümü.net Framework sınıf kitaplığı sağlar yeni bir ad System.Collections.Generic, birkaç yeni genel tabanlı koleksiyon sýnýflarýný içerir.Tüm uygulamaların hedef önerilir .NET Framework 2.0 ve sonraki yeni genel koleksiyon sınıfları yerine eski genel olmayan karşılıkları aşağıdaki gibi kullanın ArrayList.Daha fazla bilgi için bkz. Generics içinde.net Framework sınıf kitaplığı (C# Programlama Kılavuzu).

Tabii ki özel genel türler de oluşturabilirsiniz ve kendi sağlayacak yöntemler çözümleri ve tür-güvenli ve verimli tasarım desenleri Genelleştirilmiş.Aşağıdaki kod örneği, gösterim amacıyla basit bir genel bağlantılı liste sýnýf göstermektedir.(Çoğu durumda, kullanmanız gereken List<T> tarafından sağlanan sınıf.Kendi oluşturmak yerine net Framework sınıf kitaplığı.) Tür parametresi T çeşitli konumlarda burada somut bir tür normalde kullanılabilir listede depolanan öğenin türünü belirtmek için kullanılır.Aşağıdaki şekillerde kullanılır:

  • Bir yöntem parametre türü olarak AddHead yöntemi.

  • Ortak yöntemin dönüş türü olarak GetNext ve Data özelliğinde iç içe Node sınıfı.

  • İç içe geçmiş sınıfındaki özel üye veri türü olarak.

t iç içe geçmiş için kullanılabilir olduğunu unutmayın Node sınıfı.Zaman GenericList<T> somut bir tipi ile örnek olarak başlatılmış bir GenericList<int>, her geçtiği T ile değiştirilecek olan int.

// type parameter T in angle brackets
public class GenericList<T> 
{
    // The nested class is also generic on T.
    private class Node
    {
        // T used in non-generic constructor.
        public Node(T t)
        {
            next = null;
            data = t;
        }

        private Node next;
        public Node Next
        {
            get { return next; }
            set { next = value; }
        }

        // T as private member data type.
        private T data;

        // T as return type of property.
        public T Data  
        {
            get { return data; }
            set { data = value; }
        }
    }

    private Node head;

    // constructor
    public GenericList() 
    {
        head = null;
    }

    // T as method parameter type:
    public void AddHead(T t) 
    {
        Node n = new Node(t);
        n.Next = head;
        head = n;
    }

    public IEnumerator<T> GetEnumerator()
    {
        Node current = head;

        while (current != null)
        {
            yield return current.Data;
            current = current.Next;
        }
    }
}

Aşağıdaki kod örneği, genel istemci kodu nasıl kullandığını gösterir GenericList<T> tamsayılar listesini oluşturmak için sınıf.Yalnızca türü bağımsız değişkenini değiştirerek aşağıdaki kodu kolayca dizeleri veya başka bir özel türü listesi oluşturmak için değiştirilmesi:

class TestGenericList
{
    static void Main()
    {
        // int is the type argument
        GenericList<int> list = new GenericList<int>();

        for (int x = 0; x < 10; x++)
        {
            list.AddHead(x);
        }

        foreach (int i in list)
        {
            System.Console.Write(i + " ");
        }
        System.Console.WriteLine("\nDone");
    }
}

Ayrıca bkz.

Başvuru

Generics (C# Programlama Kılavuzu)

System.Collections.Generic

Kavramlar

C# Programlama Kılavuzu