在rust
中,可以执行以下操作:
for n in 1..101 {
let triple = (n % 5, n % 2, n % 7);
match triple {
// Destructure the second and third elements
(0, y, z) => println!("First is `0`, `y` is {:?}, and `z` is {:?}", y, z),
(1, ..) => println!("First is `1` and the rest doesn't matter"),
(.., 2) => println!("last is `2` and the rest doesn't matter"),
(3, .., 4) => println!("First is `3`, last is `4`, and the rest doesn't matter"),
// `..` can be used to ignore the rest of the tuple
_ => println!("It doesn't matter what they are"),
// `_` means don't bind the value to a variable
};
}
在C#中如何实现这一点?
1条答案
按热度按时间epggiuax1#
从C# 9.0开始,该语言就支持Pattern Matching,模式语法的概述可以在here中找到。
以此作为参考,很容易在C#中为上述每种情况实现非常相似的功能:
这里有几件事需要特别注意:
1.我们必须使用
switch
语句的结果。例如,这会导致错误:1.如果我们想使用
..
来丢弃0个或更多的位置项,我们需要使用C# 11.0或更高版本,并且需要将其示例化为List
或array
,然后改用方括号[]
而不是圆括号()
,如下所示: