Sdílet prostřednictvím


where (omezení obecného typu) (Referenční dokumentace jazyka C#)

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 rozhraní:

public class MyGenericClass<T> where T:IComparable { }

[!POZNÁMKA]

Další informace o where klauzule ve výrazu dotazu viz where – klauzule (Referenční dokumentace jazyka C#).

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 najdete 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 obecných typů (Průvodce programováním v C#)

new – omezení (Referenční dokumentace jazyka C#)

Omezení parametrů typů (Průvodce programováním v C#)

Koncepty

Průvodce programováním v C#

Další zdroje

Referenční dokumentace jazyka C#