[英]How to make an empty default case in switch expression in C#?
如何在 C# 中的 switch 表达式中创建一个空的默认情况?
我说的是这个语言特性。
这是我正在尝试的:
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"),
-2 => Console.WriteLine("bar"),
_ =>
};
}
}
它仍然不想编译。 所以,我试图放置一个空函数:
using System;
public class Program
{
public static void Main()
{
int i = -2;
var ignore = i switch {
-1 => Console.WriteLine("foo"),
-2 => Console.WriteLine("bar"),
_ => {}
};
}
}
它仍然不起作用。
与所有表达式一样,switch表达式必须能够计算出一个值。
出于您的目的,switch语句是正确的构造:
int i = -2;
switch (i)
{
case -1:
Console.WriteLine("foo");
break;
case -2:
Console.WriteLine("bar");
break;
}
确切地说,您正在研究表达式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",
-2 => "ignore",
_ => "???"
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.