Что означает ключевое слово «новый» при использовании внутри интерфейса в C #?

Приложите многострочный код к тегам <pre></pre>.

23
задан Ivan 5 July 2011 в 13:20
поделиться

4 ответа

Ключевое слово new сообщает компилятору, что ваше определение скрывает определение, содержащееся в интерфейсах, которые может расширять ваш интерфейс.

26
ответ дан Bala R 5 July 2011 в 13:20
поделиться

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

void Foo<T>() where T : new()
{
    T t = new T();
    // Do stuff with t
}

Это то, о чем ты думаешь?

4
ответ дан Jon Skeet 5 July 2011 в 13:20
поделиться

Вы используете интерфейс, но, похоже, вам нужен базовый класс. Интерфейс никогда не должен нуждаться в конструкторе, поскольку он не может содержать никаких полей, которые должны были бы быть инициализированы в конструкторе. Я думаю, что вы хотите использовать базовый класс вместо этого.

3
ответ дан Coeffect 5 July 2011 в 13:20
поделиться

C # и .NET не позволяют объявлять конструктор интерфейса.

Это просто обязательное ограничение реализации этого интерфейса (см. ISerializable в библиотеках .NET).

Если вы подумаете об этом, иметь конструктор в интерфейсе не имеет смысла, так как вы должны знать конкретный класс, который вы хотите создать, когда вызываете конструктор. Как бы вы вызвали такой конструктор интерфейса и каков был бы результат?

0
ответ дан thecoop 5 July 2011 в 13:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: