谁能告诉我为什么编译器会抛出警告,即使我检查了所有内容是否为空??
// check if non default accent color is selected
var accCol = await LocalSorage.GetItemAsync<string>("accentColor");
if (!String.IsNullOrEmpty(accCol) && aColors!=null && aColors.accentColorsList!=null && aColors.accentColorsList.Count()>0)
{
AccentColors res = aColors.accentColorsList.Find(x => x.ColorValue == accCol);
if(res!=null) {
this.selOption = res;
}
this.mAccentBaseColor = accCol;
}
VsCode 在 linq 查询上抛出以下警告:将 null 文字或可能的 null 值转换为不可为 null 的类型。Roslyn CS8600
由于我不允许发布警告的屏幕截图,因此会针对此行抛出警告:
AccentColors res = aColors.accentColorsList.Find(x => x.ColorValue == accCol);
好吧,我自己找到了解决方案。我必须将 Linq 结果声明为可为空。
// check if non default accent color is selected
var accCol = await LocalSorage.GetItemAsync<string>("accentColor");
if (!String.IsNullOrEmpty(accCol) && aColors!=null && aColors.accentColorsList!=null && aColors.accentColorsList.Count()>0)
{
AccentColors? res = aColors.accentColorsList.Find(x => x.ColorValue == accCol);
if(res!=null) {
this.selOption = res;
}
this.mAccentBaseColor = accCol;
}