位置模式可解构元组并匹配元素值或类型,结合switch和is表达式实现条件判断与变量提取。

在 C# 中,位置模式(Positional Pattern)可用于解构元组,通过匹配元组中各元素的值或类型来实现条件判断和变量提取。C# 的元组天然支持位置解构,因此结合 switch 表达式、is 模式表达式等语法,可以简洁地处理复杂逻辑。
元组的每个元素按其位置参与模式匹配。你可以使用常量、变量或通配符 _ 来匹配特定位置的值。
例如:
var point = (3, 5);
<p>if (point is (0, 0))
{
Console.WriteLine("原点");
}
else if (point is (var x, var y) when x > 0 && y > 0)
{
Console.WriteLine($"第一象限:x={x}, y={y}");
}</p>这里 (var x, var y) 是一个位置模式,它将元组的两个元素分别解构到局部变量 x 和 y 中。
switch 表达式结合位置模式能清晰表达多分支逻辑:
(string quadrant, bool isOrigin) = point switch
{
(0, 0) => ("原点", true),
(var x, var y) when x > 0 && y > 0 => ("第一象限", false),
(var x, var y) when x < 0 && y > 0 => ("第二象限", false),
(var x, var y) when x < 0 && y < 0 => ("第三象限", false),
(var x, var y) when x > 0 && y < 0 => ("第四象限", false),
_ => ("坐标轴", false)
};
每个模式根据元组的位置结构进行匹配,并可结合 when 条件进一步约束。
除了标准元组,实现了 Deconstruct 方法的类型也能用于位置模式。但对元组本身,由于其本身就是扁平结构,解构非常直接。
比如三元组:
var data = (1, "hello", true);
<p>if (data is (int code, string msg, true))
{
Console.WriteLine($"成功:{code} - {msg}");
}</p>此例中,第三个元素被固定匹配为 true,前两个则解构为变量。
基本上就这些。元组的位置模式匹配让代码更声明式,尤其适合处理多字段组合判断的场景。解构过程自动按位置对应,无需额外方法支持,是 C# 模式匹配中最直观的应用之一。
以上就是C# 中的模式匹配位置模式如何解构元组?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号