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