【问题标题】:cannot implicitly convert type string to int, enum无法将类型字符串隐式转换为 int、枚举
【发布时间】:2018-06-17 22:46:30
【问题描述】:

我正在尝试像这样对摩尔斯进行枚举:

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="--..",
}

但它会引发错误。

【问题讨论】:

标签: c#


【解决方案1】:

不,您不能创建字符串枚举,但您可以使用 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]));

【讨论】:

    【解决方案2】:

    来自 MSDN:

    已批准的枚举类型为 bytesbyteshortushortintuintlongulong

    【讨论】:

      【解决方案3】:

      您试图拥有一个 string 枚举,这是不可能的。每个枚举类型都有一个底层类型,它可以是除char 之外的任何整数类型。请参阅Documentation 了解更多信息。您可能想查看这篇文章以获取替代解决方案How to define an enum with string value?

      【讨论】:

      • 所以,如果我想在那儿有这些字符串,我可以做到,但我必须向每个字符串添加一些字节值 pe?否则就做不到了
      • @ArnyeMob 不,这不可能......不使用 enum 请参阅链接的文档页面
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-09
      • 1970-01-01
      • 1970-01-01
      • 2010-12-13
      相关资源
      最近更新 更多