C# 检查字符串值是否在枚举c上#

C# 检查字符串值是否在枚举c上#,c#,string,enums,C#,String,Enums,不是为我工作,我是一名学生,这对我来说是“新的”。我的问题是验证,我做错了什么?谢谢,您不能直接将该值设置为concelho字段,因为它必须首先解析为枚举类型 enum conc { Maia, Porto, Valongo, Gondomar, Gaia, Matosinhos }; private string concelho; public string Con

不是为我工作,我是一名学生,这对我来说是“新的”。我的问题是验证,我做错了什么?谢谢,您不能直接将该值设置为concelho字段,因为它必须首先解析为枚举类型

enum conc
    {
        Maia,
        Porto,
        Valongo,
        Gondomar,
        Gaia,
        Matosinhos
    };



private string concelho;

    public string Concelho
    {
        get { return concelho; }
        set { concelho = Enum.IsDefined(typeof(conc), Concelho) ? value : " "; }
    }

您的原始代码很接近。您只需将
Concelho
更改为
value

public string Concelho
{
    get { return concelho; }
    set 
    { 
        conc temp;
        if(Enum.TryParse(value, true, out temp))
            cocelho = temp;
    }
}
话虽如此。如果需要字符串表示,您可以简单地创建类型
conc
,并调用ToString()方法

enum conc
{
    Maia,
    Porto,
    Valongo,
    Gondomar,
    Gaia,
    Matosinhos
};



private string concelho;

public string Concelho
{
    get { return concelho; }
    set { concelho = Enum.IsDefined(typeof(conc), value) ? value : " "; }
}

使用
enum.TryParse
。您检查的是
Concelho
的当前值是否有效,而不是您试图设置的值。这也是需要记住的。说“它不起作用”是相当含糊的。尝试包含任何错误消息、意外结果等,以帮助诊断问题。错误:AgumentNullException未处理mscorlib.dll中发生类型为“System.ArgumentNullException”的未处理异常您这样做的原因是什么?conc在编译时是已知的,所以应该不会有任何意外。你想用这种方法解决什么问题/要求?太好了!设置{conc temp;if(Enum.TryParse(value,true,out temp))concelho=Convert.ToString(temp);}非常感谢,现在我需要理解代码。我刚刚注意到您的
concelho
变量的类型是
string
,您可能需要将其更改为类型
conc
。为了让我的答案起作用,如果你真的希望它是一个
字符串
,请使用@tinstaafl-answer
public enum conc
{
    Maia,
    Porto,
    Valongo,
    Gondomar,
    Gaia,
    Matosinhos
};



private conc concelho;

public conc Concelho
{
    get { return concelho; }
    set { concelho = value; }
}