
Size: a a a



set осуществляется с использованием объекта класса z, значения которого передаются в качестве параметров a и b. Поскольку переменные c1 и c2 являются публичными членами класса z, то они доступны с помощью имени класса. В результате мы получаем 10 20 и 5 125.




delegate T Factory<out T>();
Ковариантность предполагает возможность возвращать из метода объект, тип которого является производным от типа, возвращаемого делегатом, а контрвариантность предполагает возможность передавать в метод объект, тип которого является более универсальным по отношению к типу параметра делегата. 








void, Task, Task<T> или ValueTask<T>.