rec*_*ive 6 c# ref c#-8.0 switch-expression
我不知道如何使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 });
Run Code Online (Sandbox Code Playgroud)
我的语法有误吗?这有可能吗?
无论是否包含外部,它都不会编译ref ( )。我bool只是为了快速说明问题而使用,但是我的实际用例并不是那么简单。
是的,语法错误。由于您在问题(CS1525)中记下的编译器错误代码,这一点非常清楚。
为什么?switch 表达式似乎与 refs 不兼容。
不要与编译器对抗,只需以有效且易于阅读的方式编写代码即可。这是老式的写法:
ref int c = ref a;
if (!cond)
{
c = ref b;
}
Run Code Online (Sandbox Code Playgroud)