2017-03-02 120 views
-1
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 : " "; } 
    } 

是不是为我工作,我是学生,这对我来说是“新”。我的问题是验证,我做错了什么?谢谢已解决 - 检查字符串值是否在枚举c#

+0

使用'enum.TryParse'。 – Venky

+1

您正在检查'Concelho'的_current_值是否有效,而不是您要设置的值。 –

+0

还有一些要记住。说“不起作用”,是相当模糊的。尝试包含任何错误消息,意外结果等,以帮助诊断问题。 – tinstaafl

回答

0

您不能直接将值设置为concelho字段,因为它必须首先被解析为枚举类型。

public string Concelho 
{ 
    get { return concelho; } 
    set 
    { 
     conc temp; 
     if(Enum.TryParse(value, true, out temp)) 
      cocelho = temp; 
    } 
} 
+0

完美! set { conc temp; if(Enum.TryParse(value,true,out temp)) concelho = Convert.ToString(temp); } 非常感谢,现在我需要了解代码。 –

+0

我刚刚注意到你的'concelho'变量的类型是'string',你可能想要改变它来输入'conc'。对于我的工作答案,如果你确实希望它成为'string',请使用@tinstaafl答案 –

0

您的原始密码已关闭。你只需要改变Concelhovalue:如此说来

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 : " "; } 
} 

。如果您需要字符串表示形式,您可以简单地创建类型conc并调用ToString()方法。

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



private conc concelho; 

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