【发布时间】:2012-07-16 16:50:31
【问题描述】:
string strName = "John";
public enum Name { John,Peter }
private void DoSomething(string myname)
{
case1:
if(myname.Equals(Name.John) //returns false
{
}
case2:
if(myname == Name.John) //compilation error
{
}
case3:
if(myname.Equals(Name.John.ToString()) //returns true (correct comparision)
{
}
}
当我使用.Equals 时,它是参考比较,当我使用== 时,它意味着值比较。
有没有更好的代码而不是将枚举值转换为ToString() 进行比较?因为它破坏了值类型枚举的目的,而且枚举上的ToString() 已被弃用??
【问题讨论】:
-
你如何将字符串与枚举值进行比较?有没有办法完全避免这种情况?
-
试图将枚举与字符串进行比较是个坏主意。
-
@SecurityHound 通常在处理其他代码库时这是不可避免的。