在 C# 中连续使用比较运算符

use comparison operators continuous in c#

你好,我叫 parsa,我是一名 C# 程序员,我想连续使用比较运算符,例如假设我们有三个名为 V1、V2、V3 的变量

            Random rnd = new Random();
            int V1 = rnd.Next(1,5), V2 = rnd.Next(1, 5), V3 = rnd.Next(1, 5);

它们中的每一个都等于 1 到 4 之间的随机数然后我们想看看它们是否相等以及它们是否等于 3?我们必须使用此代码

    if(V1 == V2 && V1 == V3 && V1 == 3)
        //body

如果我想像这样使用它,它会给我一个错误!

    if(V1 == V2 == V3 == 3)
        //body

可以像我写的代码一样使用吗?

遗憾的是,您不能在 C# 中执行此操作;但是,如果您将一个变量与多个模式(如常量模式或类型模式)进行比较,(自 C# 9.0 起)您可以编写

if(v is a or b or c)

请注意,您可以在 Visual Studio 16.8 或更高版本中使用 C# 9.0。它是与 .NET 5 一起引入的。您可以通过手动将 LangVersion 标记添加到 *.csproj 来使用旧框架版本中的大部分 C# 9.0 功能(包括模式匹配)。

<PropertyGroup>
    ...
    <LangVersion>latest</LangVersion>
</PropertyGroup>

另请参阅:What's new in C# 9.0 / Pattern matching enhancements(Microsoft 文档)