// 正常工作
if (hNode == null || string.IsNullOrEmpty(titleStr) || !titleStr.Contains("aaa"))
// 判斷異常
if (hNode == null || string.IsNullOrEmpty(titleStr) || !titleStr.Contains("aaa") || !titleStr.Contains("bbb") || !titleStr.Contains("cccc") || !titleStr.Contains("dddd"))
第一條正常,第二條加入更多 || !Contains 後邏輯出錯。
C# 的 || 具備短路特性:只要前面條件為 true,後續條件不再執行。
true 就結束判斷。&& 串聯 !Contains,或用 Any/All 簡化。// 意圖:titleStr 不為空且不包含任何禁用詞
var keywords = new[] { "aaa", "bbb", "cccc", "dddd" };
bool valid = hNode != null
&& !string.IsNullOrEmpty(titleStr)
&& !keywords.Any(kw => titleStr.Contains(kw));
// 或傳統寫法
bool valid2 = hNode != null
&& !string.IsNullOrEmpty(titleStr)
&& !titleStr.Contains("aaa")
&& !titleStr.Contains("bbb")
&& !titleStr.Contains("cccc")
&& !titleStr.Contains("dddd");
titleStr 確為 string 類型,無隱藏字符干擾。