在Blazor中,使用C# 8.0中新增的非空结构来定义属性和函数参数时,编译器可能会报出非空警告。这是因为在某些情况下,我们可能会访问到一个可能为空的对象。为了解决这个问题,我们可以采取如下的最佳实践:
我们可以使用"!"操作符来告诉编译器,我们已经检查过这个对象不是空的,因此可以直接访问。比如:
protected override async Task OnInitializedAsync()
{
var result = await HttpClient.GetFromJsonAsync>("api/mymodels");
MyModels = result!;
}
我们还可以使用null合并操作符"??",来给一个默认值。比如:
protected override async Task OnInitializedAsync()
{
var result = await HttpClient.GetFromJsonAsync>("api/mymodels");
MyModels = result ?? new List();
}
如果我们确定这个属性可能为空,我们可以在属性前面加上"?"来告诉编译器这个属性可能为空。比如:
public int? MyNullableInt { get; set; }
我们可以在项目中开启Nullable Reference Types特性来明确告诉编译器,哪些对象可能为空,哪些对象一定不为空。比如:
#nullable enable
public void MyFunction(MyModel myModel)
{
//myModel可能为空,因此我们需要先检查一下
if(myModel != null)
{
//...
}
}
以上是Blazor最佳实践-非空警告的方法,通过使用这些技巧,我们可以避免在Blazor中
上一篇:Blazor最佳实践:初始化对象
下一篇:Blazor最新预览版的问题