1)
2)
3) Делаем вот так:
public struct mySTRUCT
{
public c(){}
}
Компилятор ругается, всё верно
[CS0568] Structs cannot contain explicit parameterless constructors
4) Делаем обобщённый класс с указанием new()
public class myCLASS<T> where T : new () {}
А так же делаем обычнуб структуру
public struct mySTRUCT{}
А теперь делаем вот так:
var q = new myCLASS<mySTRUCT>();
Компилируем и получаем:
То есть я повесил ограничение на запрет отсутствия пустого конструктора у типа, при этом забросил тип структура, который не может иметь пустого конструктора, а получил успех??????
В чём тут магия, почему компилятор не ругается?)
Типы значений (структурные типы) по умолчанию содержат конструктор без параметров.
https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/classes-and-structs/constructors
Если не предоставить конструктор для структуры, C# будет использовать неявный конструктор по умолчанию, чтобы автоматически инициализировать каждое поле типа значения значением по умолчанию.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники