如何声明从C#8开关表达式返回的参数?

如何声明从C#8开关表达式返回的参数?,c#,c#-8.0,switch-expression,C#,C# 8.0,Switch Expression,我正在查看以下代码: 公共枚举MO { 学习、练习、测验 } 公共枚举CC { H } 公共类设置 { 公共MO模式{get;set;} 公共CC{get;set;} } 静态void Main(字符串[]参数) { var Settings=newsomesettings(){Cc=Cc.H,Mode=MO.Practice}; var(msg、isCC、upd)=设置。模式开关{ case MO.Learn=>(“当您第一次学习短语及其含义时,请使用此模式。”, Settings.Cc==

我正在查看以下代码:

公共枚举MO
{
学习、练习、测验
}
公共枚举CC
{ 
H
}
公共类设置
{
公共MO模式{get;set;}
公共CC{get;set;}
}
静态void Main(字符串[]参数)
{
var Settings=newsomesettings(){Cc=Cc.H,Mode=MO.Practice};
var(msg、isCC、upd)=设置。模式开关{
case MO.Learn=>(“当您第一次学习短语及其含义时,请使用此模式。”,
Settings.Cc==Cc.H,
假),,
case MO.Practice=>(“使用此模式帮助您记住短语及其含义。”,
Settings.Cc==Cc.H,
假),,
案例MO.测验=>(“使用此模式运行自标记测试。”,
Settings.Cc==Cc.H,
正确的);
_=>默认值;
}
}
不幸的是,
msg
isCC
upd
似乎没有正确声明,它给出了这样一条消息:

无法推断隐式类型解构变量的类型 “msg”,isCC和upd也是如此


你能帮我解释一下如何声明这些吗?

我在写东西时没有检查,但你可以试试这样:

(string msg, bool isCC, bool upd) result = Settings.Mode switch ... <rest of your code>
result.msg

case
标签带有开关表达式,您有一个
中间,没有<代码>;<代码>之后:

var(msg、isCC、upd)=设置。模式开关{
MO.Learn=>(“首次学习短语及其含义时,请使用此模式。”,
Settings.Cc==Cc.H,
假),,
MO.Practice=>(“使用此模式帮助您记住短语及其含义。”,
Settings.Cc==Cc.H,
假),,
MO.QUICK=>(“使用此模式运行自标记测试。”,
Settings.Cc==Cc.H,
对),,
_=>默认值
};

是否有在线C#8编译器可以尝试此功能?您能在一个计算机中复制此功能吗?这将使帮助您变得更容易,而不是每个潜在的回答者都必须做同样的工作来重现它。@PavelAnikhouski问题的关键是OP得到了一个编译错误。是否有关于
default
关键字作用的文档?“什么是新的”页面没有说任何关于它的内容,我想知道这是否就是问题所在。这个问题是答案的结果吗?