只是一個學術問題: 當將Enum與int進行比較時,是否可以避免int轉換?重載枚舉運算符C#和Silverlight
int i = 0;
if(i == (int)MyEnum.Whatever)
{
}
我想重載==操作符以這樣的方式:
public static MyEnum operator ==(int lhs, MyEnum rhs)
{}
感謝您閱讀;-)
只是一個學術問題: 當將Enum與int進行比較時,是否可以避免int轉換?重載枚舉運算符C#和Silverlight
int i = 0;
if(i == (int)MyEnum.Whatever)
{
}
我想重載==操作符以這樣的方式:
public static MyEnum operator ==(int lhs, MyEnum rhs)
{}
感謝您閱讀;-)
你不能。見this similar question。正如在這個問題中提出的那樣,你可以定義一個擴展方法來進行比較,以擺脫重複的轉換。
不,不可能。問題是 - 你爲什麼要比較?
因爲我有來自數據庫的int Id。 – 2010-03-11 11:22:32
將枚舉與int進行比較在與嵌入式應用程序或現場總線系統交談時也很常見。 – OregonGhost 2010-03-11 11:26:19
是的,從數據庫位Id#s不真正映射到枚舉;)通常。嵌入式Ints是有意義的。我會盡快枚舉,然後繼續比較枚舉。儘快擺脫「低層次」的表現。 – TomTom 2010-03-11 11:40:38
我看到了這個問題,但ChrisHDog在那個問題中詢問了兩個枚舉的重載操作符,所以我有我的希望;-)但是,謝謝。 – 2010-03-11 11:22:09