Что выведет код Middle Дженерики обновлено
Статический конструктор в дженерике
Вопрос
Что выведет программа (.NET 8)? По строке на каждый вывод.
Console.WriteLine(TypeName<int>.Value);
Console.WriteLine(TypeName<string>.Value);
Console.WriteLine(TypeName<int>.Value);
Console.WriteLine(TypeName<int>.Inits + TypeName<string>.Inits);
static class TypeName<T>
{
public static readonly string Value;
public static int Inits;
static TypeName() { Value = typeof(T).Name; Inits++; }
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: Int32, String, Int32, 2. У каждого закрытого типа свой набор статических полей и свой статический конструктор.
Что выведет
Int32
String
Int32
2
Разбор
У каждого закрытого типа свой набор статических полей и свой статический конструктор. TypeName<int> инициализируется один раз (Int32), TypeName<string> один раз (String). Повторное обращение к TypeName<int> берёт готовое значение. Сумма счётчиков 1 + 1 = 2.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.