如何在C#中实现类似Rust的match解构式模式匹配?
在C#中实现类似Rust的元组模式匹配功能
C# 9.0及以上版本提供了与Rust中类似的元组模式匹配能力,包括解构绑定、忽略单个元素、忽略剩余元素等特性。下面是对应你给出的Rust代码的C#实现:
for (int n = 1; n <= 100; n++) { var triple = (n % 5, n % 2, n % 7); switch (triple) { // 解构第二个和第三个元素,对应Rust的(0, y, z)分支 case (0, var y, var z): Console.WriteLine($"First is `0`, `y` is {y}, and `z` is {z}"); break; // 匹配第一个元素为1,忽略剩余所有元素,对应Rust的(1, ..)分支 case (1, ..): Console.WriteLine("First is `1` and the rest doesn't matter"); break; // 匹配最后一个元素为2,忽略前面所有元素,对应Rust的(.., 2)分支 case (.., 2): Console.WriteLine("last is `2` and the rest doesn't matter"); break; // 匹配第一个元素为3、最后一个元素为4,忽略中间元素,对应Rust的(3, .., 4)分支 case (3, .., 4): Console.WriteLine("First is `3`, last is `4`, and the rest doesn't matter"); break; // 默认分支,忽略所有元素,对应Rust的_分支 default: Console.WriteLine("It doesn't matter what they are"); break; } }
关键特性说明
- 解构绑定:通过
var y、var z将元组中的元素绑定到变量,和Rust中的直接绑定逻辑一致。 - 剩余忽略模式
..:用于忽略元组中未明确指定的剩余元素,无论是前缀、后缀还是中间部分,都能像Rust中一样使用。 - 默认分支
default:对应Rust中的_,匹配所有未被前面分支覆盖的情况。
内容的提问来源于stack exchange,提问作者mxt
相关产品推荐
相关产品推荐

