Úvod do Generics (Příručka programování 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 Generics v.NET Framework, knihovna tříd (Příručka programování 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<T> 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
Generics (Příručka programování C#)