當使用帶有或的開關運算式和帶有條件的默認防護時,應該有什么樣的行為? 我希望任何符合 or 陳述句之一或默認防護的東西都會進入該情況,但顯然這不是作業方式。
請看下面的例子
var types = new HashSet<string> ()。
types.Add("a")。
types.Add("b");
types.Add("c")。
var input = "d";
var result = input switch {
"d" or _ when types.Contains(input) => "1",
_ => "2"。
};
Console.WriteLine(result); //I'd expect "1" but I get "2" 。
uj5u.com熱心網友回復:
檔案宣告:
切換運算式的結果是第一個切換運算式臂的運算式的值。 的運算式的值,該運算式的模式與輸入的 運算式和的case guard(如果存在)評估為true
。
你的運算式的第一條臂違反了這一點,因為 guard 存在,并且 guard 評估為 false。所以結果是第二個臂("2")。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/334301.html
標籤:
