首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在C#中将超出范围的数字转换为枚举不会产生异常

在C#中,将超出范围的数字转换为枚举会导致异常。当使用Enum.ToObjectEnum.Parse方法时,如果传入的数字超出了枚举的有效范围,将会抛出ArgumentException异常。为了避免这个问题,你可以在尝试转换之前检查数字是否在枚举的有效范围内。

以下是一个示例代码,演示如何在转换之前检查数字是否在枚举的有效范围内:

代码语言:csharp
复制
using System;
using System.Collections.Generic;

public enum MyEnum
{
    Value1 = 1,
    Value2 = 2,
    Value3 = 3
}

public class Program
{
    public static void Main()
    {
        int number = 4;
        MyEnum result;

        if (IsValidEnumValue<MyEnum>(number, out result))
        {
            Console.WriteLine("Converted value: " + result);
        }
        else
        {
            Console.WriteLine("Invalid enum value.");
        }
    }

    public static bool IsValidEnumValue<T>(int value, out T result) where T : struct, IConvertible
    {
        result = default(T);

        if (!typeof(T).IsEnum)
        {
            return false;
        }

        foreach (var item in Enum.GetValues(typeof(T)))
        {
            if (item.ToInt32(null) == value)
            {
                result = (T)item;
                return true;
            }
        }

        return false;
    }
}

在这个示例中,我们定义了一个名为MyEnum的枚举类型,并在Main方法中尝试将数字4转换为MyEnum类型。我们使用IsValidEnumValue方法来检查数字是否在枚举的有效范围内,如果是,则转换并输出结果。如果不是,则输出"Invalid enum value."。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券