【发布时间】:2019-08-15 16:45:50
【问题描述】:
在 WinForms 中,常见的初始化函数是初始化引用变量(例如)
class SomeClass : Form {
Button b;
SomeClass() {
InitializeComponents();
}
SomeClass(Container x) {
InitializeComponents();
}
void InitializeComponents() {
b = new Button();
}
}
如您所见,b 始终初始化为非空值。但是,C# 8 仍然会抱怨 SomeClass() 没有初始化不可为空的值 b。
当然我可以将 b 标记为可空(按钮?b),但是,现在我会在每次使用 b 时收到警告,因为未检查可空性(它不能为空...)
解决此问题的最佳方法是什么。是否有一个属性可用于将 InitializeComponent 标记为始终由构造函数调用?
请注意,这是 WinForms 中非常常见的模式(每个组件...)
尤瓦尔
【问题讨论】:
标签: c# winforms c#-8.0 nullable-reference-types