微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无效的C#8.0 switch语句

如何解决无效的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 举报,一经查实,本站将立刻删除。