C# 中用作单词“is”和“and”的逻辑运算符 [duplicate]

Logical operators in C# used as words 'is' and 'and' [duplicate]

提问人:SimeonYordanov 提问时间:11/15/2023 更新时间:11/15/2023 访问量:49

问:

在我正在处理的项目的代码库中,我看到了相等性检查和枚举之间范围检查的语法,如下所示:

public enum DaysOfWeek
{
  Monday,
  Tuesday,
  Wednesday,
  Thursday,
  Friday,
  Saturday,
  Sunday,
}

public static partial class Extensions
{
  public static bool IsWeekDay(this DaysOfWeek value) => value is <= DaysOfWeek.Friday and >= DaysOfWeek.Monday;
}

var isWeekDay = DaysOfWeek.Monday.IsWeekDay();
Console.WriteLine(isWeekDay);
// True

我的意思是语法是不言自明的,但我不知道 C# 中存在这种语法,当我尝试在谷歌中搜索时,我没有找到任何信息或任何示例。我什至尝试询问 chatGPT 的免费版本,他的回答是可能安装了一些扩展程序,以便此行为在没有任何编译或运行时错误的情况下工作。因此,如果你们中的任何人使用过这种语法并知道它是如何作为扩展安装的,或者它是否来自新版本的 C#,我将很乐意学习新的东西。

C# .NET 语法

评论

7赞 Fildor 11/15/2023
"模式匹配“是你找不到任何有用的东西的词。
1赞 Fildor 11/15/2023
“我什至尝试询问 chatGPT 的免费版本”——我实际上建议这样做。我现在又一次听说它把初学者引向了一个完全错误的方向。
0赞 SimeonYordanov 11/15/2023
这太快了,非常感谢你的回答!

答:

2赞 Guru Stron 11/15/2023 #1

这称为模式匹配,如果我没记错的话,它是在 C# 7(C# 7 功能的规范)中引入的,并在后续版本中通过添加不同的模式(如 C# 11 中的列表模式或 C# 10 中的扩展属性模式)逐渐改进。

评论

1赞 SimeonYordanov 11/15/2023
谢谢,我真的很感激这些信息!
0赞 Guru Stron 11/15/2023
@SimeonYordanov很乐意帮忙!如果答案适合您 - 请随时将其标记为已接受(选中左侧)