2016-07-20 4 views
2

В C# при написании общего класса или функции есть ли разница между where : class, new() и where : new()? Есть ли new(), что это также class?Есть ли разница между «where: class, new()» и «where: new()»?

Как я понял из this структур не может быть без параметров конструктора

+1

Обращаясь к вашему редактированию, у них не может быть * явных * без параметров конструкторов. – helrich

ответ

4

new() означает, что это также class?

Нет, new() просто означает, что тип имеет общедоступный конструктор по умолчанию. Оба класса и структуры могут иметь такие конструкторы. Ни одно из ограничений не подразумевает другого.

Как я понял из этого не может структур иметь конструкторы без параметров

Ключевое слово в этом документе «явное», то есть конструктор, который вы объявляете в коде. Конструктор по умолчанию - это неявный конструктор без параметров, созданный компилятором для типа, когда он не имеет явных определений конструктора с параметрами или без них.

1

new() ограничение на общий класс или метод означает, что T должен иметь конструктор по умолчанию, но не заботится ли T является class или struct

+0

Здесь говорится, что структуры не могут иметь конструкторы без параметров. https://msdn.microsoft.com/en-us/library/aa288208%28v=vs.71%29.aspx?f=255&MSPPError=-2147217396 –

+1

@Nuri Tasdemir: Ключевое слово есть «явное». Конструктор по умолчанию * неявный *. – BoltClock

Смежные вопросы