where — Ograniczenie typu ogólnego (odwołanie w C#)

W definicji typu rodzajowego where klauzuli jest używana do określenia ograniczeń dotyczących typów, które mogą być używane jako argumenty dla parametru typu, określone w deklaracji rodzajowy.Na przykład, można zadeklarować klasy rodzajowej, MyGenericClass, takie, że parametr typu T implementuje IComparable interfejsu:

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

[!UWAGA]

Aby uzyskać więcej informacji na stronie gdzie klauzuli w wyrażeniu kwerendy, zobacz Klauzula where (odwołanie w C#).

Oprócz ograniczeń interfejsu where klauzula może zawierać ograniczenia klasy podstawowej, która stwierdza, że typ musi mieć określonej klasy jako klasa podstawowa (lub być tej samej klasy) aby służyć jako argumentów typu dla tego typu rodzajowego.Jeśli takie ograniczenie musi wystąpić przed wszystkimi innymi ograniczeniami tego parametru typu.

class MyClass<T, U>
    where T : class 
    where U : struct
{ }

where Klauzula może również obejmować ograniczenia konstruktora.Istnieje możliwość utworzenia wystąpienia parametru typu, za pomocą operatora new; Jednak aby to zrobić parametru typu musi ograniczone przez ograniczenie konstruktora new().Ograniczenie new() umożliwia kompilator wiedzieć, że którykolwiek z argumentów typu dostarczone muszą mieć dostępny bezparametrowego--lub domyślna--konstruktora.Na przykład:

public class MyGenericClass<T> where T : IComparable, new()
{
    // The following line is not possible without new() constraint:
    T item = new T();
}

new() Ograniczenie pojawia się jako ostatni element w where klauzuli.

Z wielu parametrów typu, należy skorzystać z jednej where klauzuli dla każdego parametru typu, na przykład:

interface IMyInterface
{
}

class Dictionary<TKey, TVal>
    where TKey : IComparable, IEnumerable
    where TVal : IMyInterface
{
    public void Add(TKey key, TVal val)
    {
    }
}

Można także dołączyć ograniczenia do wpisz parametry metody rodzajowe, jak to:

public bool MyMethod<T>(T t) where T : IMyInterface { }

Powiadomienie o składni do opisania ograniczenia parametru typu na delegatów jest taka sama jak metody:

delegate T MyDelegate<T>() where T : new()

Informacji na temat delegatów rodzajowy, zobacz Delegatów Generic.

Szczegółowe informacje na temat składni i użycia ograniczenia zobacz ograniczenia parametrów typu.

Specyfikacja języka C#

Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#. Specyfikacja języka jest ostatecznym źródłem informacji o składni i użyciu języka C#.

Zobacz też

Informacje

Wprowadzenie do typów ogólnych (Przewodnik programowania w języku C#)

new — Ograniczenie (odwołanie w C#)

Ograniczenia dotyczące parametrów typu (Przewodnik programowania w języku C#)

Koncepcje

Przewodnik programowania w języku C#

Inne zasoby

Odwołanie w C#