在 WinForms 中,常见的初始化函数是初始化引用变量(例如)
class SomeClass : Form {
Button b;
SomeClass() {
InitializeComponents();
}
SomeClass(Container x) {
InitializeComponents();
}
void InitializeComponents() {
b = new Button();
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见, b 始终初始化为非空值。但是,C# 8 仍然会抱怨 SomeClass() 没有初始化不可为 null 的值 b。
当然我可以将 b 标记为可空(按钮?b)但是,现在我会在每次使用 b 时收到警告,因为未检查可空性(它不能为空...)
解决此问题的最佳方法是什么。是否有可用于将 InitializeComponent 标记为始终由构造函数调用的属性?
请注意,这是 WinForms 中非常常见的模式(每个组件...)
尤瓦尔