我不想說:我怎麼說是不是,是不是
(trsaz != v1) && (trsaz != v2) && ...
我想是這樣的:
trsaz != (v1, v4, v7, v11)
這是可能的,或者是有其他還有另外的東西!=
。
我不想說:我怎麼說是不是,是不是
(trsaz != v1) && (trsaz != v2) && ...
我想是這樣的:
trsaz != (v1, v4, v7, v11)
這是可能的,或者是有其他還有另外的東西!=
。
var badList = new[] { v1, v4, v7, v11 };
var result = !badList.Contains(trsaz);
var excludeList = new[] { "v1", "v4", "v7", "v11" };
if(!excludeList.Contains(trsaz))
{
...
}
其實,我更喜歡的是創建一個小的擴展方法:
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機制根本就不是必要的,會混淆一些維護你的代碼的人。
var result = (new[] {v1, v4, v7}).Every(o => o != trsaz);
我將如何做到這一點通過構造函數傳遞控件:con.control.v1,con.control.v4,con.control.v7,con.control.v11? – divfe 2011-06-01 01:42:10
你應該可以創建一個像這樣的數組'var badList = new [] {con.control.v1,con.control.v4,con.control.v7,con.control.v11};'如果不是,你能發佈您的構造函數簽名? – 2011-06-01 01:44:54
是的,按名稱比較 – divfe 2011-06-01 01:45:55