kde (obecný typ omezení) (C#-Reference)
V definici obecný typ where klauzule lze určit omezení pro typy, které lze použít jako argumenty pro parametr typu definované v obecné prohlášení.Můžete například deklarovat Obecná třída MyGenericClass, tak, že parametr typu T implementuje IComparable<T> rozhraní:
public class MyGenericClass<T> where T:IComparable { }
[!POZNÁMKA]
Další informace o where klauzule ve výrazu dotazu viz Pokud klauzule (C#-Reference).
Vedle rozhraní omezení where klauzule mohou zahrnovat omezení základní třídy, které uvádí, že musí mít typ zadaný jako základní třída třídy (nebo být samotné třídy) s cílem použít jako argument typu pro obecný typ.Pokud je takové omezení, musí být před další omezení na typ parametru.
class MyClass<T, U>
where T : class
where U : struct
{ }
where Klauzule mohou rovněž zahrnovat omezení konstruktor.Je možné vytvořit instanci typu parametru pomocí operátoru new; však k tomu parametr typu musí být ovlivněno omezení konstruktoru new().Omezení new() umožňuje kompilátor vědět, že každý zadaný argument typu musí mít dispozici bez parametrů--a--výchozí konstruktor.Příklad:
public class MyGenericClass<T> where T : IComparable, new()
{
// The following line is not possible without new() constraint:
T item = new T();
}
new() Omezení, zobrazí se v poslední where klauzule.
S více parametry typu, použijte jeden where klauzule pro každý parametr typu, například:
interface IMyInterface
{
}
class Dictionary<TKey, TVal>
where TKey : IComparable, IEnumerable
where TVal : IMyInterface
{
public void Add(TKey key, TVal val)
{
}
}
Můžete také připojit omezení zadání parametrů Obecné metody, například takto:
public bool MyMethod<T>(T t) where T : IMyInterface { }
Oznámení o syntaxi popisu omezení parametru typu delegátů je stejný jako metody:
delegate T MyDelegate<T>() where T : new()
Informace o obecných Delegáti, Generic Delegáti.
Podrobnosti o syntaxi a použití omezení naleznete v tématu omezení typu.
Specifikace jazyka C#
Další informace naleznete v tématu Specifikace jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.
Viz také
Referenční dokumentace
Úvod do Generics (Příručka programování C#)
Omezení na typ parametrů (Příručka programování C#)