gpt4 book ai didi

c# - 将 foreach 与 Enum.GetValues() 一起使用时如何修复代码分析警告 CS8605?

转载 作者:行者123 更新时间:2023-12-04 09:33:40 28 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Enum.GetValues() Return Type

(6 个回答)


去年关闭。




考虑以下 .Net Core 3.1 代码:

using System;

namespace CoreConsoleA
{
public static class Program
{
static void Main()
{
// Warning CS8605, Unboxing a possibly null value:
foreach (MyEnum enumValue in Enum.GetValues(typeof(MyEnum)))
{
Console.WriteLine(enumValue);
}
}
}

enum MyEnum { Zero, One, Two };
}
启用代码分析和可空检查后,上面的代码会引发“警告 CS8605 取消装箱可能为空值”。
我可以使用“#pragma warning disable CS8605”来抑制警告。
我也可以这样写代码:
foreach (MyEnum? enumValue in Enum.GetValues(typeof(MyEnum)))
{
Console.WriteLine(enumValue!.Value);
}
但这似乎有点奇怪,因为 Enum.GetValues(typeof(MyEnum))不可能返回任何空值。
有没有更好的方法来解决这个问题?

最佳答案

(回答我自己的问题,因为我刚刚意识到我应该做什么!)
您可以只转换 Enum.GetValues() 的返回值到正确的类型,像这样:

foreach (var enumValue in (MyEnum[]) Enum.GetValues(typeof(MyEnum)))
{
Console.WriteLine(enumValue);
}

关于c# - 将 foreach 与 Enum.GetValues() 一起使用时如何修复代码分析警告 CS8605?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62698643/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com