gpt4 book ai didi

c# - 如何在忽略大小写的情况下测试枚举是否已定义?

转载 作者:IT王子 更新时间:2023-10-29 04:07:18 31 4
gpt4 key购买 nike

下面的通用静态方法接受一个字符串并返回一个枚举

它很好地忽略了大小写,因为我将 ignoreCase 参数设置为 true。

但是,我也想测试枚举是否存在,但是执行此操作的 enum.IsDefined 方法似乎没有ignoreCase 参数。 p>

如何测试枚举是否已定义并同时忽略大小写?

using System;

namespace TestEnum2934234
{
class Program
{
static void Main(string[] args)
{
LessonStatus lessonStatus = StringHelpers.ConvertStringToEnum<LessonStatus>("prepared");
ReportStatus reportStatus = StringHelpers.ConvertStringToEnum<ReportStatus>("finished");

Console.WriteLine(lessonStatus.ToString());
Console.WriteLine(reportStatus.ToString());
Console.ReadLine();
}
}

public static class StringHelpers
{
public static T ConvertStringToEnum<T>(string text)
{
if (Enum.IsDefined(typeof(T), text)) //does not have ignoreCase parameter
return (T)Enum.Parse(typeof(T), text, true);
else
return default(T);
}
}

public enum LessonStatus
{
Defined,
Prepared,
Practiced,
Recorded
}

public enum ReportStatus
{
Draft,
Revising,
Finished
}
}

最佳答案

public enum MyEnum
{
Bar,
Foo
}

class Program
{
static void Main(string[] args)
{
var containsFoo = Enum.GetNames(typeof(MyEnum)).Any(x => x.ToLower() == "foo");
Console.WriteLine(containsFoo);
}
}

关于c# - 如何在忽略大小写的情况下测试枚举是否已定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3157936/

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