Sdílet prostřednictvím


Úvod do obecných typů (Průvodce programováním v C#)

Obecný třídy a metody kombinovat opětovné použití, typ bezpečnosti a účinnosti tak, aby jejich protějšky obecné nelze.Generics nejčastěji používaných s kolekcí a metody, které na nich pracovat.Verze 2.0.Knihovna třídy NET Framework poskytuje nový obor názvů System.Collections.Generic, která obsahuje několik tříd nové kolekce založené na Obecný.Je vhodné, aby všechny aplikace, cíl .NET Framework 2.0 a novější nové třídy obecnou kolekci místo použít starší protějšky Obecné jako ArrayList.Další informace naleznete v tématu Obecné typy v knihovně tříd rozhraní .NET Framework (Průvodce programováním v C#).

Samozřejmě můžete také vytvořit vlastní obecné typy a metody, které poskytují vlastní všeobecné řešení a provedeních, které jsou typu bezpečné a účinné.Následující příklad kódu ukazuje jednoduchý Obecná třída propojený seznam pro demonstrační účely.(Ve většině případů by měla použít List podle třídy.NET Framework, knihovna tříd namísto vytváření vlastních.) Parametr typu T se používá v několika místech, kde konkrétní typ by obvykle použít k označení typu položky uložené v seznamu.Používá se následujícími způsoby:

  • Typ parametru metody v AddHead metoda.

  • Jako návratový typ veřejné metody GetNext a Data vlastnost vnořený Node třídy.

  • Jako typ dat soukromý člen vnořené třídy.

Je k dispozici na vnořený t Node třídy.Při GenericList<T> je vytvořena s konkrétní typ, například jako GenericList<int>, každý výskyt T bude nahrazen 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;
        }
    }
}

Následující příklad kódu ukazuje, jak Klientský kód používá obecného GenericList<T> třídy Vytvoření seznamu celých čísel.Jednoduše změnou argumentu typ následující kód mohl snadno změnit vytvořit seznamy řetězců nebo jiný vlastní typ:

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");
    }
}

Viz také

Referenční dokumentace

Obecné typy (Průvodce programováním v C#)

System.Collections.Generic

Koncepty

Průvodce programováním v C#