如何解决无效的C#8.0 switch语句
我遇到以下错误:Only assignment,call,increment,decrement,await,and new object expressions can be used as a statement
public void LogClientSideErrors(string message,ValidationType validationType)
=> validationType switch
{
ValidationType.Success => setInfo(message,controllerInfo),ValidationType.Critical => setFatal(message,ValidationType.Error => setError(message,ValidationType.Exception => setError(message,ValidationType.information => setInfo(message,ValidationType.Warning => setWarn(message,_ => setError("invalid enum value",};
更新:有效的解决方案:
internal static void GenerateLogs(string message,string controllerInfo,ValidationType validationType)
=> (validationType switch
{
var x when x == ValidationType.Success || x == ValidationType.information => new Action<string,string>(setInfo),ValidationType.Critical => setFatal,var x when x == ValidationType.Error || x == ValidationType.Exception => setError,ValidationType.Warning => setWarn,_ => (_,controllerInfo) => setError("invalid enum value",})(message,controllerInfo);
解决方法
一个switch表达式期望您将从每个分支中返回一些内容,但是您试图运行void方法。您可以使这些方法返回某些值,使用常规开关,也可以返回Action<string,string>
然后调用它,就像这样。
public void LogClientSideErrors(string message,ValidationType validationType)
=> (validationType switch
{
ValidationType.Success => new Action<string,string>(setInfo),ValidationType.Critical => setFatal,ValidationType.Error => setError,ValidationType.Exception => setError,ValidationType.Information => setInfo,ValidationType.Warning => setWarn,_ => (_,ci) => setError("invalid enum value",ci),})(message,controllerInfo);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。