Несколько ограничений в C#
У одного T бывает несколько ограничений, их пишут через
запятую. Тип должен выполнить все сразу. Порядок фиксирован:
сначала один базовый класс, затем интерфейсы, в конце -
new().
Метод создаёт счётчик, записывает в него 3 и тут же сбрасывает. Создание даёт ограничение new(), поле N - базовый класс, сброс - интерфейс:
static int Cleared<T>() where T : Counter, IReset, new()
{
T item = new T();
item.N = 3;
item.Reset();
return item.N;
}
Console.WriteLine(Cleared<Counter>());
interface IReset { void Reset(); }
class Counter : IReset { public int N; public void Reset() => N = 0; }
Опишите интерфейс с методом закрытия и класс Gate с логическим полем Open, который его реализует. Напишите метод с тремя ограничениями сразу: базовый класс, этот интерфейс и конструктор без параметров. Создайте Gate, запишите в Open значение true, закройте его и выведите Open.