gpt4 book ai didi

c# - 正确转换为枚举

转载 作者:行者123 更新时间:2023-11-30 14:25:22 25 4
gpt4 key购买 nike

我有一个包含一堆值的枚举,看起来像这样。请注意,我使用 0 表示“未定义”。

public enum MyEnum
{
Apple = 1,
Banana = 2,
Orange = 3,
Undefined = 0
}

我想创建一个转换方法,它将接收一个 int 值并返回枚举,但我想确保如果接收到一个不在我的枚举中的值,我将返回“未定义”。我有以下代码,但如果我通过 47,我想确保我得到 MyEnum.Undefined。我应该如何修改此代码,以便任何未定义的值都返回 MyEnum.Undefined。

public static MyEnum GetEnum(int value)
{
var enumValue = MyEnum.Undefined;

if(value > 0)
enumValue = (MyEnum)value;

return enumValue;
}

最佳答案

只需使用 Enum.IsDefined :

public static MyEnum GetEnum(int value) =>
Enum.IsDefined(typeof(MyEnum), value) ? (MyEnum) value : MyEnum.Undefined;

完整示例:

using System;

public enum MyEnum
{
// Moved here as it's more conventional.
Undefined = 0,
Apple = 1,
Banana = 2,
Orange = 3
}

class Test
{
public static void Main()
{
Console.WriteLine(GetEnum(5)); // Undefined
Console.WriteLine(GetEnum(0)); // Undefined
Console.WriteLine(GetEnum(-1)); // Undefined
Console.WriteLine(GetEnum(3)); // Orange
}

public static MyEnum GetEnum(int value) =>
Enum.IsDefined(typeof(MyEnum), value) ? (MyEnum) value : MyEnum.Undefined;
}

关于c# - 正确转换为枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38537234/

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