В WinForms распространено, что общая функция инициализации инициализирует ссылочные переменные (например)
class SomeClass : Form {
Button b;
SomeClass() {
InitializeComponents();
}
SomeClass(Container x) {
InitializeComponents();
}
void InitializeComponents() {
b = new Button();
}
}
Как видите, b всегда инициализируется ненулевым значением. Тем не менее, C # 8 по-прежнему будет жаловаться, что SomeClass () не инициализирует ненулевое значение b.
Конечно, я мог пометить b как nullable (кнопка? B), однако теперь я получу предупреждение при каждом использовании b, так как nullability не проверяется (он не может быть нулевым ...)
Каков наилучший способ решить эту проблему. Есть ли атрибут, который можно использовать для пометки InitializeComponent как всегда вызываемого конструктором?
Обратите внимание, что это очень распространенный шаблон в WinForms (каждый компонент ...)
Юваль