C#枚舉比較時沒有得到編譯錯誤爲const int使用equals
class ConstValues
{
public const int NULL=1;
}
class Example
{
private enum FormatFunction
{
Date,
Unknown
}
...
FormatFunction returnValue = fn();
...
現在我有兩個場景。
當我用這樣的方式我返回代碼比較值
if (!returnValue.Equals(ConstValues.NULL))
{
...
我沒有得到任何編譯時錯誤(和預期的代碼不工作,因爲這是我錯過了我的一個錯誤)。
但是,當我改變
if (returnValue != ConstValues.NULL)
{
...
我得到一個編譯時錯誤,發現錯誤我做到了。
我知道枚舉的底層結構是int,但即使在使用Equals時我寧願得到編譯時錯誤。
爲什麼第一種方式通過,第二種方式不通過?
還有一種方法Enum.IsDefined我認爲它可能對你有用。 https://msdn.microsoft.com/en-us/library/system.enum.isdefined(v=vs.110).aspx –