不能隐式地将类型字符串转换为int,枚举

时间:2018-06-17 22:46:31

标签: c#

我正试图像这样做一个莫尔斯的枚举:

public enum Morse : String
{
    medzera = "       ",          
    a=".-",               
    b="-...",              
    c="-.-.",
    d="-..",
    e=".",
    f="..-.",
    g="--.",
    h="....",
    i="..",
    j=".---",
    k="-.-",
    l=".-..",
    m="--",
    n="-.",
    o="---",
    p=".--.",
    q="--.-",
    r=".-.",
    s="...",
    t="-",
    u="..-",
    v=...-",
    w=".--",
    x="-..-",
    y="-.--",
    z="--..",
}

但它会引发错误。

3 个答案:

答案 0 :(得分:3)

否则您无法创建字符串枚举,但使用Dictionary<char,string>

Dictionary<char,string> letters = new Dictionary<char,string>(){
   {'a' , ".-"},
   .....
   {'z' , "--.."}
};

用法类似于

var input = "az";
var output = string.Join("/", input.Select(c => letters[c]));

答案 1 :(得分:2)

来自MSDN:

  

枚举的已批准类型为sbyteshortushortintuintlong,{{1} },或ulong

答案 2 :(得分:2)

您正尝试使用string枚举,这是不可能的。每个枚举类型都有一个基础类型,除了char之外,它可以是任何整数类型。有关详细信息,请参阅Documentation。您可能需要查看此帖子以了解替代解决方案How to define an enum with string value?