小编JR *_*gan的帖子

C# 8 - 枚举上的 CS8605“取消装箱可能为空值”

<nullable>enable</nullable>在 .csproj 中有一个项目,我遇到了一些奇怪的警告行为。

我有一个遍历枚举的 foreach 语句,枚举中的 foreach 项目运行一些代码。但是当我尝试执行此操作时,VS2019 会标记 CS8605“取消装箱可能为空值”警告。

在此处输入图片说明

此处显示了完整代码。该错误显示超过 的减速t

public static class Textures
{
    private static readonly Dictionary<TextureSet, Texture2D> textureDict = new Dictionary<TextureSet, Texture2D>();

    internal static void LoadContent(ContentManager contentManager)
    {
        foreach(TextureSet t in Enum.GetValues(typeof(TextureSet)))
        {
            textureDict.Add(t, contentManager.Load<Texture2D>(@"textures/" + t.ToString()));
        }
    }

    public static Texture2D Map(TextureSet texture) => textureDict[texture];
}
Run Code Online (Sandbox Code Playgroud)

我正在努力理解为什么有可能为t空,因为枚举是不可为空的。我想知道,因为Enum.GetValues类型的返回Array是否有一些隐式转换在这里进行,这是这个问题的根源。我目前的解决方案只是抑制警告。但我想了解这里发生了什么。也许有更好的方法来迭代枚举。

我正在使用 .net Core 3.1 和 Visual Studio 社区 2019 16.7.2

c# enums c#-8.0 nullable-reference-types

6
推荐指数
1
解决办法
730
查看次数

标签 统计

c# ×1

c#-8.0 ×1

enums ×1

nullable-reference-types ×1