首页 > 解决方案 > 将 switch 语句重构为枚举

问题描述

我想清理我的代码并使其更简单。现在我有一个返回和 int 值的方法。

private int ReturnMyValue(string line)
{
    switch (line)
    {
        case "ST":
            return 1;
        case "KG":
            return 2;
        case "M":
            return 3;
        case "M2":
            return 4;
        (...)
    }
}

在此之前,我从一个文件中读取了一个字符串数组,所以它看起来像这样:

var myString = "";
var splittedString = myString.Split('|');
var iWantThatValue = ReturnMyValue(splitted[0]); 

有没有办法有这样的枚举:

private enum Value
{
    ST = 1,
    KG = 2
}

并以某种方式摆脱该方法?

我希望我在等于“ST”iWantThatValue时为 1 。splitted[0]

标签: c#enums

解决方案


您可以将字符串解析为枚举,例如

public enum Value
{
    ST = 1, // start at 1
    KG,
    M,
    M2
}

var value = (Value)Enum.Parse(typeof(Value), "KG");

并获得整数值...

var intValue = (int)val;

推荐阅读