问题标签 [switch-expression]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
802 浏览

c# - C# 8 switch 表达式:一次处理多个案例?

C# 8 引入了模式匹配,我已经找到了使用它的好地方,比如这个:

然后变成

但是,您可以看到我现在不得不提到GameType.RoyalBattle两次GameType.Ffa。有没有办法在模式匹配中一次处理多个案例?我正在考虑这样的事情,但它不是有效的语法:

我也尝试过类似的东西

或者

但没有一个是有效的。

也没有找到任何关于此的示例。它甚至支持吗?

0 投票
2 回答
941 浏览

java - java - 返回带有开关盒的字符串

我第一次尝试使用枚举。对于某些测试,我想覆盖我的枚举的 toString 方法并返回一个带有所选枚举的字符串。

到目前为止,这是我的代码:

IntelliJ 在我的案例下划线并告诉我以下内容:“不是声明”=> 我想这是有道理的,如果不允许使用 switch 案例构建字符串。

到目前为止一切顺利,但似乎不可能返回通过开关盒构建的字符串,或者我在返回时犯了错误?返回所选枚举的任何其他选项?我可以添加一个属性来保存我选择的枚举名称,但是我可以这样做更简单一些。

感谢帮助

0 投票
1 回答
171 浏览

switch-statement - c# 8 switch 表达式不够“聪明”

这段代码很简单,只是一个普通的开关:

但是,编译器给了我以下错误:

CS0037 无法将 null 转换为“布尔”,因为它是不可为空的值类型

该变量显然是一个可为空的 bool bool?,为什么 c# 编译器不能在我不必强制转换 null 以使其工作的情况下解决这个问题:

我没有做对吗?演员不是不必要的吗?

0 投票
1 回答
319 浏览

c# - 新的 C# 8.0 开关表达式的运算符优先级是什么?

我刚刚将我当前的项目升级到新发布的 .NET Standard 2.1 和 C# 8.0,并决定将一些大型switch语句转换为新的、更紧凑的表达式语法

由于返回值在某些计算中被进一步使用,我想知道switch当输入变量靠近运算符时新表达式的行为。

以以下示例进行字符串连接:

我猜想switch对变量的绑定非常强烈input,因此首先被评估。事实上,Letter: a当我输入 时,它会打印出来1

但我现在的问题是:这种行为是否适用于任何运营商?

从我的实验中,我无法确定上述假设不成立的情况,但这显然并不意味着我没有错过任何情况。文档似乎也没有在switch表达式的上下文中提及运算符优先级。还是我在这里有一些更深的误解?

0 投票
1 回答
514 浏览

c# - 想要启用可空引用类型时如何处理可选参数?

我看到了打开(非)可空引用类型的巨大优势,但是我有很多带有可选参数的方法,我想知道纠正编译器产生的警告的正确方法是什么。

通过使用注释类型使参数可以为空,?从而消除了所有优点。另一个想法是将所有带有可选参数的方法变成单独的方法,这需要大量的工作并且会产生很高的复杂性(参数组合的指数爆炸)。

我正在考虑这样的事情,但我真的怀疑这是否是一种好方法(性能方面等),而不是第一眼:

0 投票
2 回答
501 浏览

c# - 使用管道时一直异步

如果我有一个使用管道的应用程序,该管道具有许多要foreach在所有阶段上执行的阶段并调用:

界面是这样的:

它基本上接受一个上下文并返回一个它变得更丰富的上下文。

在其中一个阶段Execute方法中,我需要调用服务,并且想要执行异步操作。所以现在Execute方法需要更改为例如

用于await调用服务。

所有其他阶段都没有异步代码,但现在需要更改,因为最佳实践是“一路异步”。

引入异步代码时必须进行这些更改是否正常?

0 投票
3 回答
1947 浏览

c# - c# 8.0 switch 表达式返回类型和空值

我正在尝试了解 C# 8.0 开关表达式的工作原理并且有几个问题。

  1. null为什么在默认情况下不能使用value ?编译器抛出Cannot convert null to 'int' because it is a non-nullable value type错误。
  2. 为什么它试图将 null 值转换为int而函数的返回类型是'double?'?

这是我正在玩的功能:

0 投票
1 回答
447 浏览

c# - C#8:切换 ref 表达式

我不知道如何让 switch 表达式产生一个ref值。

我的语法错了吗?这甚至可能吗?

无论我是否包含外部ref ( )部分,它都不会编译。我用abool只是为了快速说明问题,但我的实际用例并不是那么简单。

0 投票
3 回答
216 浏览

c# - 有没有办法让 switch 使用 C# 8 switch 表达式返回字符串值?

我有这段代码,其中开关的每个部分都返回一个值ModeMessage2。是否可以使用新的 C#switch表达式(或任何其他代码优化)来优化其switch工作方式?

0 投票
2 回答
250 浏览

c# - 如何声明从 C# 8 switch 表达式返回的参数?

我正在看这段代码:

不幸的是,似乎msg,isCCupd没有正确声明,它给出了一条消息:

无法推断隐式类型解构变量“msg”的类型,对于 isCC 和 upd 也是如此。

你能帮我解释一下如何声明这些吗?