Looking for c# Keywords? Try Ask4Keywords

C# Language Ограничения типа (новое ключевое слово)


пример

Используя ограничение new() , можно задать параметры типа для определения пустого (по умолчанию) конструктора.

class Foo
{
    public Foo () { }
}

class Bar
{
    public Bar (string s) { ... }
}

class Factory<T>
    where T : new()
{
    public T Create()
    {
        return new T();
    }
}

Foo f = new Factory<Foo>().Create(); // Valid.
Bar b = new Factory<Bar>().Create(); // Invalid, Bar does not define a default/empty constructor.

Второй вызов Create() даст ошибку времени компиляции со следующим сообщением:

«Бар» должен быть не абстрактным типом с открытым конструктором без параметров, чтобы использовать его как параметр «Т» в родовом типе или методе «Фабрика»,

Для конструктора с параметрами нет ограничений, поддерживаются только конструкторы без параметров.