如何在事件中初始化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
相关产品推荐
相关产品推荐

