gpt4 book ai didi

c# - 我可以在 CASE 中使用 ENUM 而不是带有枚举的 switch 语句吗?

转载 作者:太空宇宙 更新时间:2023-11-03 19:42:18 25 4
gpt4 key购买 nike

我的应用程序中有 ENUM 和扩展,我是这样使用的:

public enum CO
{
Random = 0,
FirstToLast = 1,
    LastToFirst = 2,
}

public static partial class Extensions
{
public static string Text(this CO cardOrder)
{
switch (cardOrder)
{
case CO.Random: return "Random";
            case CO.FirstToLast: return "1, 2, 3";
            case CO.LastToFirst: return "3, 2, 1";
}
return "";
}
}

在代码中,我设置了 switch 语句来决定更新数据库:

switch (segControlCardOrder.SelectedValue)
{
case "Random":
    App.DB.UpdateIntSetting(SET.Co, (int)CO.Random);
         break;
   case "1, 2, 3":
         App.DB.UpdateIntSetting(SET.Co, (int)CO.FirstToLast);
         break;
   case "3, 2, 1":
         App.DB.UpdateIntSetting(SET.Co, (int)CO.LastToFirst);
         break;
}

有没有一种方法可以避免使用 switch 语句,而只根据 ENUM 的值调用 UpdateIntSettings?

最佳答案

您还可以为其他方式添加扩展方法(从字符串到枚举)。然后你可以在你的语句中使用方法:

public static CO CardOrder(this string cardOrder)
{
switch (cardOrder)
{
case "Radom": return CO.Random;
case "1, 2, 3": return CO.FirstToLast;
case "3, 2, 1": return CO.LastToFirst;
}
throw new ArgumentException(string.Format($"{cardOrder} is not a CO representation"));
}

简单使用:

App.DB.UpdateIntSetting(SET.Co, (int)segControlCardOrder.SelectedValue.CardOrder());

关于c# - 我可以在 CASE 中使用 ENUM 而不是带有枚举的 switch 语句吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51592392/

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