You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在事件中初始化Blazor非可空变量以消除警告?

解决Blazor中"非可空变量未初始化"警告的合理方式

你的Blazor Razor页面@code块中的代码如下:

private List<User> Users { get; set; }
protected override async Task OnInitializedAsync()
{
    Users = await Context.Users.Include(u => u.Address).ToListAsync();
}

虽然Users会在被访问前通过OnInitializedAsync完成初始化,但C#静态分析无法识别Blazor的生命周期执行顺序,因此抛出"非可空变量未初始化"警告。

完全可以通过赋值default!来抑制这个警告,这是符合当前场景的合理操作。default!的作用是明确告诉编译器:开发者已确认变量会在被使用前完成初始化,无需进行未初始化检查。

修改后的代码如下:

private List<User> Users { get; set; } = default!;
protected override async Task OnInitializedAsync()
{
    Users = await Context.Users.Include(u => u.Address).ToListAsync();
}

这种修改不会影响程序运行逻辑——Blazor的生命周期保证OnInitializedAsync会在Razor模板渲染、访问Users之前执行,因此不会出现空引用异常。该方法同样适用于其他C#事件驱动架构场景:只要能确保变量在被使用前一定会完成初始化,就可以用default!消除编译器的误报警告。

内容的提问来源于stack exchange,提问作者David Thielen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 07:22:52