2010-03-11 87 views
2

只是一個學術問題: 當將Enum與int進行比較時,是否可以避免int轉換?重載枚舉運算符C#和Silverlight

int i = 0; 
if(i == (int)MyEnum.Whatever) 
{ 
} 

我想重載==操作符以這樣的方式:

public static MyEnum operator ==(int lhs, MyEnum rhs) 
{} 

感謝您閱讀;-)

回答

1

你不能。見this similar question。正如在這個問題中提出的那樣,你可以定義一個擴展方法來進行比較,以擺脫重複的轉換。

+0

我看到了這個問題,但ChrisHDog在那個問題中詢問了兩個枚舉的重載操作符,所以我有我的希望;-)但是,謝謝。 – 2010-03-11 11:22:09

0

不,不可能。問題是 - 你爲什麼要比較?

+0

因爲我有來自數據庫的int Id。 – 2010-03-11 11:22:32

+0

將枚舉與int進行比較在與嵌入式應用程序或現場總線系統交談時也很常見。 – OregonGhost 2010-03-11 11:26:19

+0

是的,從數據庫位Id#s不真正映射到枚舉;)通常。嵌入式Ints是有意義的。我會盡快枚舉,然後繼續比較枚舉。儘快擺脫「低層次」的表現。 – TomTom 2010-03-11 11:40:38