c# - C#8:切换 ref 表达式
问题描述
我不知道如何让 switch 表达式产生一个ref
值。
bool cond = true;
int a = 1, b = 2;
// This works
ref int c = ref cond ? ref a : ref b;
// But using a switch expression fails to compile.
// Error CS1525 Invalid expression term 'ref'
c = ref (cond switch { true => ref a, false => ref b });
我的语法错了吗?这甚至可能吗?
无论我是否包含外部ref ( )
部分,它都不会编译。我用abool
只是为了快速说明问题,但我的实际用例并不是那么简单。
解决方案
是的,语法错误。由于您在问题中记录的编译器错误代码(CS1525),这一点非常清楚。
为什么?switch 表达式似乎与 refs 不兼容。
不要与编译器对抗,只需以有效且易于阅读的方式编写代码。这是写它的老式方法:
ref int c = ref a;
if (!cond)
{
c = ref b;
}
推荐阅读
- java - JAXB - 嵌套自定义对象编组和解组
- opengl-es - GLSL:片段着色器何时退出/返回
- android - 将 BindView 与 Butterknife 一起使用的反面是什么?
- scala - Spark结构化流内存绑定
- .net - 主机应用程序可以与正在执行的工作流进行通信吗?
- c - 计算C中一串数字中出现频率最高的数字
- ios - 当前位置不显示
- c# - 动态对象引用 C#
- javascript - What the ratio is between 1 unit in Three.js and 1 unit in Oimo.js?
- excel - VBA 取消选择所有切片器选项(1 除外)