c# tuple 和 switch 搭配使用

搭配使用 tuple 和 switch

(string Str, char Separator) tuple = myEnum switch
{
	MyEnum.RED => (text, '-'),
	MyEnum.YELLOW => (text, '.'),
	MyEnum.GREEN => (text, '/'),
		
	_ => (text, 'u'),
};

测试代码

namespace Any
{
    public class TupleSwitch
    {
        enum MyEnum
        {
            RED,
            YELLOW,
            GREEN
        }


        class Program
        {
            static void Main(string[] args)
            {
                MyEnum e1 = MyEnum.RED;
                String e1Str1 = "Red-01";
                String e1Str2 = "Red-02";

                MyEnum e2 = MyEnum.YELLOW;
                String e2Str1 = "Yellow.03";
                String e2Str2 = "Yellow.04";

                MyEnum e3 = MyEnum.GREEN;
                String e3Str1 = "Green/05";
                String e3Str2 = "Green/06";

                int idx = 0;

                if (ParseIndexFromString(e1, e1Str1, out idx))
                {
                    Console.WriteLine($"idx = {idx}");
                }

                if (ParseIndexFromString(e1, e1Str2, out idx))
                {
                    Console.WriteLine($"idx = {idx}");
                }

                if (ParseIndexFromString(e2, e2Str1, out idx))
                {
                    Console.WriteLine($"idx = {idx}");
                }

                if (ParseIndexFromString(e2, e2Str2, out idx))
                {
                    Console.WriteLine($"idx = {idx}");
                }

                if (ParseIndexFromString(e3, e3Str1, out idx))
                {
                    Console.WriteLine($"idx = {idx}");
                }

                if (ParseIndexFromString(e3, e3Str2, out idx))
                {
                    Console.WriteLine($"idx = {idx}");
                }
            }

            public static bool ParseIndexFromString(MyEnum myEnum, string text, out int index)
            {
                (string Str, char Separator) tuple = myEnum switch
                {
                    MyEnum.RED => (text, '-'),
                    MyEnum.YELLOW => (text, '.'),
                    MyEnum.GREEN => (text, '/'),


                    _ => (text, 'u'),
                };


                int pos = tuple.Str.IndexOf(tuple.Separator);
                string subStr = tuple.Str.Substring(pos + 1).Trim();                
                if (int.TryParse(subStr, out index))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }

    }
}

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

cyang812

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值