如何在 C# 中的 switch 表达式中创建一个空的默认情况?

问题描述

如何在 C# 中的 switch 表达式中创建一个空的认情况?

我说的是 this 语言功能

这是我正在尝试的:

using System;
                    
public class Program
{
    public static void Main()
    {
        int i = -2;
        var ignore = i switch {
            -1 => Console.WriteLine("foo"),-2 => Console.WriteLine("bar"),_ =>,};
    }
}

另外,我尝试不使用逗号:

using System;
                    
public class Program
{
    public static void Main()
    {
        int i = -2;
        var ignore = i switch {
            -1 => Console.WriteLine("foo"),_ =>
        };
    }
}

它仍然不想编译。所以,我尝试放置一个函数

using System;
                    
public class Program
{
    public static void Main()
    {
        int i = -2;
        var ignore = i switch {
            -1 => Console.WriteLine("foo"),_ => {}
        };
    }
}

它仍然不起作用。

解决方法

开关 表达式 必须能够计算出一个值,就像所有表达式一样。

就您的目的而言,switch 语句是正确的构造:

draw_next_part
,

您正在研究表达式 switch 准确的表达式。所有表达式都必须返回一个;而 Console.WriteLine 的类型为 void 返回没有

要摆弄 switch 表达式,您可以尝试

public static void Main() {
  int i = -2;

  // switch expression: given i (int) it returns text (string)
  var text = i switch {
    -1 => "foo",-2 => "ignore",_ => "???" // or default,string.Empty etc.
  };

  Console.WriteLine(text);
}

或者将表达式放入WriteLine

public static void Main() {
  int i = -2;

  // switch expression returns text which is printed by WriteLine  
  Console.WriteLine(i switch {
    -1 => "foo",_ => "???"
  });
}