问题标签 [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.
c# - C# 8 switch 表达式:一次处理多个案例?
C# 8 引入了模式匹配,我已经找到了使用它的好地方,比如这个:
然后变成
但是,您可以看到我现在不得不提到GameType.RoyalBattle
两次GameType.Ffa
。有没有办法在模式匹配中一次处理多个案例?我正在考虑这样的事情,但它不是有效的语法:
我也尝试过类似的东西
或者
但没有一个是有效的。
也没有找到任何关于此的示例。它甚至支持吗?
java - java - 返回带有开关盒的字符串
我第一次尝试使用枚举。对于某些测试,我想覆盖我的枚举的 toString 方法并返回一个带有所选枚举的字符串。
到目前为止,这是我的代码:
IntelliJ 在我的案例下划线并告诉我以下内容:“不是声明”=> 我想这是有道理的,如果不允许使用 switch 案例构建字符串。
到目前为止一切顺利,但似乎不可能返回通过开关盒构建的字符串,或者我在返回时犯了错误?返回所选枚举的任何其他选项?我可以添加一个属性来保存我选择的枚举名称,但是我可以这样做更简单一些。
感谢帮助
switch-statement - c# 8 switch 表达式不够“聪明”
这段代码很简单,只是一个普通的开关:
但是,编译器给了我以下错误:
CS0037 无法将 null 转换为“布尔”,因为它是不可为空的值类型
该变量显然是一个可为空的 bool bool?
,为什么 c# 编译器不能在我不必强制转换 null 以使其工作的情况下解决这个问题:
我没有做对吗?演员不是不必要的吗?
c# - 新的 C# 8.0 开关表达式的运算符优先级是什么?
我刚刚将我当前的项目升级到新发布的 .NET Standard 2.1 和 C# 8.0,并决定将一些大型switch
语句转换为新的、更紧凑的表达式语法。
由于返回值在某些计算中被进一步使用,我想知道switch
当输入变量靠近运算符时新表达式的行为。
以以下示例进行字符串连接:
我猜想switch
对变量的绑定非常强烈input
,因此首先被评估。事实上,Letter: a
当我输入 时,它会打印出来1
。
但我现在的问题是:这种行为是否适用于任何运营商?
从我的实验中,我无法确定上述假设不成立的情况,但这显然并不意味着我没有错过任何情况。文档似乎也没有在switch
表达式的上下文中提及运算符优先级。还是我在这里有一些更深的误解?
c# - 想要启用可空引用类型时如何处理可选参数?
我看到了打开(非)可空引用类型的巨大优势,但是我有很多带有可选参数的方法,我想知道纠正编译器产生的警告的正确方法是什么。
通过使用注释类型使参数可以为空,?
从而消除了所有优点。另一个想法是将所有带有可选参数的方法变成单独的方法,这需要大量的工作并且会产生很高的复杂性(参数组合的指数爆炸)。
我正在考虑这样的事情,但我真的怀疑这是否是一种好方法(性能方面等),而不是第一眼:
c# - 使用管道时一直异步
如果我有一个使用管道的应用程序,该管道具有许多要foreach
在所有阶段上执行的阶段并调用:
界面是这样的:
它基本上接受一个上下文并返回一个它变得更丰富的上下文。
在其中一个阶段Execute
方法中,我需要调用服务,并且想要执行异步操作。所以现在Execute
方法需要更改为例如
用于await
调用服务。
所有其他阶段都没有异步代码,但现在需要更改,因为最佳实践是“一路异步”。
引入异步代码时必须进行这些更改是否正常?
c# - c# 8.0 switch 表达式返回类型和空值
我正在尝试了解 C# 8.0 开关表达式的工作原理并且有几个问题。
null
为什么在默认情况下不能使用value ?编译器抛出Cannot convert null to 'int' because it is a non-nullable value type
错误。- 为什么它试图将 null 值转换为
int
而函数的返回类型是'double?'?
这是我正在玩的功能:
c# - C#8:切换 ref 表达式
我不知道如何让 switch 表达式产生一个ref
值。
我的语法错了吗?这甚至可能吗?
无论我是否包含外部ref ( )
部分,它都不会编译。我用abool
只是为了快速说明问题,但我的实际用例并不是那么简单。
c# - 有没有办法让 switch 使用 C# 8 switch 表达式返回字符串值?
我有这段代码,其中开关的每个部分都返回一个值ModeMessage2
。是否可以使用新的 C#switch
表达式(或任何其他代码优化)来优化其switch
工作方式?
c# - 如何声明从 C# 8 switch 表达式返回的参数?
我正在看这段代码:
不幸的是,似乎msg
,isCC
和upd
没有正确声明,它给出了一条消息:
无法推断隐式类型解构变量“msg”的类型,对于 isCC 和 upd 也是如此。
你能帮我解释一下如何声明这些吗?