【问题标题】:C#8: Switch ref expressionsC#8:切换 ref 表达式
【发布时间】:2020-03-18 00:55:06
【问题描述】:

我不知道如何让 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 ( ) 部分,它都不会编译。我使用bool 只是为了快速说明问题,但我的实际用例并不是那么简单。

【问题讨论】:

    标签: c# ref c#-8.0 switch-expression


    【解决方案1】:

    是的,语法错误。由于您在问题中记录的编译器错误代码(CS1525),这一点非常清楚。

    为什么? switch 表达式似乎与 refs 不兼容。

    不要与编译器对抗,只需以一种有效且易于阅读的方式编写代码即可。这是写它的老派方式:

    ref int c = ref a;
    
    if (!cond)
    {
        c = ref b;
    }
    

    【讨论】:

      猜你喜欢
      • 2020-09-08
      • 2010-11-28
      • 2020-12-16
      • 2022-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      相关资源
      最近更新 更多