Sdílet prostřednictvím


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#)

nové omezení (C#-Reference)

Omezení na typ parametrů (Příručka programování C#)

Koncepty

Příručka programování C#

Další zdroje

C#-Reference