2016-04-21 37 views
0

我有一個枚舉與10個常量在它。我也有一個類定義如下:MyEnumType tyleType;檢查屬性是不是從枚舉數列表幾個不同的常量

現在我想檢查tyleType是不是(!=)可以說最後5個枚舉成員。我不想寫:

if(tyleType!=MyNumType.10th && tyleType! MyEnumType.9th && /* etc */) 

我能在這種情況下做什麼?

+0

可以請您包括枚舉def。 –

+0

這是無效的枚舉值 –

+0

認爲它是僞代碼。 –

回答

1

您可以將它們添加到集合,並使用Enumerable.Contains,FE:

MyNumType[] notAllowed = { MyNumType.Tenth, MyNumType.Ninth, ... }; 
if(!notAllowed.Contains(tyleType)) 
{ 

} 

或儲存白名單允許它更易讀:

if(allowed.Contains(tyleType)){..} 
+0

謝謝你的回答我正在考慮這樣的事情。我想我沒有完全解釋我的問題。在生產過程中,不允許的數量可能會發生變化,所以我定義了一個可以輕鬆更改的獨立靜態類中的常數。我如何使用該號碼將正確的內容添加到不允許的集合中? –

+0

@UriPopov:你想要一個邏輯,它根據一個數字返回枚舉值。這聽起來不像一個好的設計。枚舉不是有序集合。 –

+0

@UriPopov:但你可以使用'MyNumType []'或'列表'這是有序的,那麼很容易返回最後5個或其他。 –

0

您可以使用IsDefined來檢查值在枚舉

if(MyNumType.IsDefined(TypeOf(MyNumType), tyleType) 
{ 
    //Code 
} 
相關問題