2011-06-01 33 views
5

我不想說:我怎麼說是不是,是不是

(trsaz != v1) && (trsaz != v2) && ... 

我想是這樣的:

trsaz != (v1, v4, v7, v11) 

這是可能的,或者是有其他還有另外的東西!=

回答

12
var badList = new[] { v1, v4, v7, v11 }; 
var result = !badList.Contains(trsaz); 
+0

我將如何做到這一點通過構造函數傳遞控件:con.control.v1,con.control.v4,con.control.v7,con.control.v11? – divfe 2011-06-01 01:42:10

+0

你應該可以創建一個像這樣的數組'var badList = new [] {con.control.v1,con.control.v4,con.control.v7,con.control.v11};'如果不是,你能發佈您的構造函數簽名? – 2011-06-01 01:44:54

+0

是的,按名稱比較 – divfe 2011-06-01 01:45:55

2
var excludeList = new[] { "v1", "v4", "v7", "v11" }; 
if(!excludeList.Contains(trsaz)) 
{ 
    ... 
} 
0

其實,我更喜歡的是創建一個小的擴展方法:

public static bool IsIn<T>(this T obj, params T[] set) { 
    return set.Any(el => element.Equals(obj));   
} 

它封裝了所有魔法,使你的代碼確實簡潔這是你的目標,很明顯:

if (!trsaz.IsIn(v1, v4, v7, v11)) { 
    // ... 
} 

如果它不重要,隱藏機制總是好的,特別是在這種情況下,使用ny機制根本就不是必要的,會混淆一些維護你的代碼的人。

0
var result = (new[] {v1, v4, v7}).Every(o => o != trsaz); 
相關問題