首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表达体匿名方法

表达体匿名方法
EN

Stack Overflow用户
提问于 2020-05-06 21:22:32
回答 1查看 113关注 0票数 1

我正在读这个博客:https://deniskyashif.com/2019/11/20/a-practical-guide-to-state-machines/

这里有一段代码:

代码语言:javascript
复制
State ChangeState(State current, Input input) =>
    (current, input) switch
    {
        (State.Created, Input.Admit) => State.Ready,
        (State.Ready, Input.ScheduleDispatch) => State.Running,
        (State.Running, Input.IOorEventWait) => State.Waiting,
        (State.Waiting, Input.IOorEventComplete) => State.Ready,
        (State.Running, Input.Interrupt) => State.Ready,
        (State.Running, Input.Exit) => State.Terminated,
        _ => throw new NotSupportedException(
            $"{current} has no transition on {input}")
    };

我在中测试过的效果很好。

然而,我不知道为什么它的工作和如何。我甚至不知道应该是什么。

我得到的State ChangeState(State current, Input input) =>部分是一个方法签名和一个表达式体,我认为(current, input) switch是某种匿名方法签名,但是它到底是什么,如果我将它粘贴到一个常规方法中,它为什么不能工作呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-06 22:44:54

在您的示例中,这个新的C# 8开关表达式基本上匹配元组中的模式。(current, input) switch告诉您,您将比较这两个值。(State.XYZ, Input.ABC)告诉您,您将检查是否current == State.XYZ && input == Input.ABC,如果是,返回表达式后的=>运算符,否则检查下一个。_匹配任何值,可以用作(_, X)或仅用作_

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61645638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档