将 null 文字或可能的 null 值转换为不可为 null 的类型,即使已经检查了 null

问题描述 投票:0回答:1

谁能告诉我为什么编译器会抛出警告,即使我检查了所有内容是否为空??

// 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);
c# .net nullreferenceexception
1个回答
0
投票

好吧,我自己找到了解决方案。我必须将 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;
}
© www.soinside.com 2019 - 2024. All rights reserved.