提问人:Daniel Jonsson 提问时间:7/25/2023 更新时间:7/25/2023 访问量:183
Blazor 组件中的 Nullable 参数给出“可能的 null 引用分配”警告
Nullable parameter in Blazor component gives "Possible null reference assignment" warning
问:
我正在使用 .NET 7,并且我有以下两个 Blazor 组件:
Child.razor
:
@using System.Xml.Linq
<h3>Child</h3>
@code {
[Parameter]
public Func<XElement, Task<bool>>? OnDraft { get; set; }
}
Parent.razor
:
@using System.Xml.Linq
<h3>Parent</h3>
<Child OnDraft="@OnDraft" />
@code {
public Func<XElement, Task<bool>>? OnDraft { get; set; }
}
但是,在 Visual Studio 中,我在第 5 行收到一条警告,说:Parent.razor
Possible null reference assignment
当参数和参数都具有相同的可为 null 类型时,为什么会发生这种情况?
答:
0赞
MrC aka Shaun Curtis
7/25/2023
#1
我可以解释一下。
你在这里处理的是 Razor 代码,而不是纯 C#。
当 Razor 编译器生成此代码时,相关赋值行如下所示:
__builder.AddAttribute(9, "OnDraft", (object)((global::System.Func<System.Threading.Tasks.Task<System.Boolean>>)(
#nullable restore
#line 11 "C:\Users\shaun\Documents\GitHub\Blazr\Blazr.Components\src\Components\SO76757934\SO76757934\Pages\Index.razor"
this.OnDraft
#line default
#line hidden
#nullable disable
)));
请注意可为 null 的指令。期望是启用了。OnDraft
System.Func<System.Threading.Tasks.Task<System.Boolean>>
nullable
因此发出警告。为什么?您需要询问 Razor 团队。
2赞
Daniel Jonsson
7/25/2023
#2
解决方法似乎是改变:
<Child OnDraft="@OnDraft" />
自:
<Child OnDraft="@(OnDraft!)" />
现在没有更多的警告:
评论