在我正在做的项目的代码库中,我看到了一个用于相等性判断和枚举之间的范围判断的语法:

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#中存在这种语法,当我试图在Google中搜索时,我没有找到任何信息或任何示例.我甚至试着询问了ChatGPT的免费版本,他的回答是,可能安装了一些扩展来使此行为正常工作,而不会出现任何编译或运行时错误.因此,如果你们中的任何人使用过这个语法,并且知道它是如何作为扩展安装的,或者如果它是从新版本的C#中安装的,我将很乐意学习一些新的东西.

推荐答案

这被称为pattern matching,如果我没记错的话,它是在C#7(spec for C# 7 feature)中引入的,并在随后的版本中随着添加了不同的模式(如List patterns in C# 11Extended property patterns in C# 10)而逐渐得到改进.

Csharp相关问答推荐

EF Core. Income和. AsNoTracking正确用法

读取配置文件(mytest. exe. config)

将XPS转换为PDF C#

使页面内容居中

如何使datagridview的列具有响应性,以便不是所有列都更改其宽度

用C#调用由缓冲区指针参数组成的C API

由于POST中的应用程序/JWT,出现不支持的内容类型异常

共享暂存/生产环境中Azure事件中心的建议配置

更改执行目录

异步任务导致内存泄漏

为什么Docker中没有转发该端口?

为什么我不能从我的异步任务方法中返回异步任务方法?

如何让游戏对象在切换场景时被销毁,但在开始新游戏时重新锁定

将字符串类型日期输入(yyyy-mm-ddthh:mm:ss)转换为MM/dd/yyyy格式

正在try 将自定义字体添加到我的控制台应用程序

WPF如何获取有关从一个视图模型更改另一个视图模型的信息

如何阻止可传递依赖项出现在项目中

如何更改Datagridview行标题

缩写的MonthNames有问题

MS Project读取项目自定义域