如何在C# switch表达式中使用索引器?
如何在C# switch表达式中使用索引器进行模式匹配?
你需要将判断字符串长度为3且首字符为'1'的逻辑转换为switch表达式,尝试用this[0]的写法会触发编译错误,这里提供两种可行的解决方式:
方法一:属性模式中直接使用索引器
在属性模式里,不需要加this,直接通过[索引]的形式访问索引器即可:
var a = "123"; var b = a switch { { Length: 3, [0]: '1' } => "passed", _ => "error" }; Console.WriteLine(b); // 输出 "passed"
这种写法在C# 9及以上版本支持,通过属性模式同时匹配Length属性和索引器的值。
方法二:使用位置模式匹配字符序列
字符串可以被视为字符的序列,因此可以直接用位置模式来匹配指定位置的字符,这种写法更简洁:
var a = "123"; var b = a switch { ['1', _, _] => "passed", // 第一个字符为'1',后两个字符任意,同时隐含长度为3 _ => "error" }; Console.WriteLine(b); // 输出 "passed"
这里的['1', _, _]模式会自动匹配长度为3的字符串,且第一个字符是'1',完全符合你的原始判断逻辑。
内容的提问来源于stack exchange,提问作者Sinatr
相关产品推荐
相关产品推荐

