C#:根据不同枚举类型的枚举值返回枚举值

Dan*_*iff 1 c# enums

所以我希望有一个属性getter,它根据不同类型的枚举值返回枚举值,而不必求助于long switch语句.有没有办法使用一个或多个索引来匹配两个枚举列表?

public enum LanguageName
    {
        Arabic,
        Chinese,
        Dutch,
        English,
        Farsi,
        French,
        Hindi,
        Indonesian,
        Portuguese,
        Spanish,
        Urdu
    }

    public enum LanguageISOCode
    {
        ara,
        zho,
        dut,
        eng,
        fas,
        fre,
        hin,
        ind,
        por,
        spa,
        urd
    }

public class language
{
    public language()
    {
    }

    public LanguageName Name
    {
        get
        {
           // get the Name enum based on the Code enum
        }
        set;
    }

    public LanguageISOCode Code
    {
        get;
        set;
    }
}
Run Code Online (Sandbox Code Playgroud)

Ada*_*son 8

您可以显式声明一个枚举值等于另一个,如下所示:

public enum LanguageName
{
    Arabic,
    Chinese,
    Dutch,
    ...
}

public enum LanguageISOCode
{
    ara = LanguageName.Arabic,
    zho = LanguageName.Chinese,
    dut = LanguageName.Dutch,
    ...
 }
Run Code Online (Sandbox Code Playgroud)

那将让你在他们之间施放:

 LanguageISOCode codeValue = LanguageISOCode.ara;

 LanguageName name = (LanguageName)(int)codeValue;
Run Code Online (Sandbox Code Playgroud)

要么

 LanguageName nameValue = LanguageName.Arabic;

 LanguageISOCode = (LanguageISOCode)(int)nameValue;
Run Code Online (Sandbox Code Playgroud)

虽然以上内容应该回答您的明确问题,但您应该看看该System.Globalization.CultureInfo课程.它为各种文化提供了相当多的功能.