如何解读这段C# Lambda表达式示例代码?
C#代码逻辑解读:Lambda表达式、RequestResponse构造函数及最后一行逻辑
1. 单行Lambda表达式是否会返回值?
不会。你看到的success => MarketSubscriptionHandler = newSub是无返回值的Lambda表达式,它对应Action<RequestResponse>委托类型(返回值为void)。这个Lambda的作用仅执行MarketSubscriptionHandler = newSub的赋值操作,没有任何返回值。
2. RequestResponse构造函数的第三个参数具体指代什么?
构造函数第三个参数Action<RequestResponse> onSuccess是一个成功回调委托:
- 它会在当前RequestResponse对应的请求操作执行成功时被触发调用
- 参数
success就是当前的RequestResponse实例,可用于在回调中获取请求的相关信息 - 本质上是给请求成功后的后续处理逻辑预留的执行入口
3. 最后一行代码逻辑解读
return SendMessage(new RequestResponse(id, message, success => MarketSubscriptionHandler = newSub));
这行代码可以拆解为三步理解:
- 创建RequestResponse实例:传入生成的请求ID、修改后的订阅消息,以及成功回调Lambda(请求成功时,将提前创建好的
newSub赋值给MarketSubscriptionHandler) - 发送请求:将这个RequestResponse实例传入
SendMessage方法,该方法负责完成请求的发送,并处理响应的异步逻辑 - 返回异步任务:
SendMessage返回Task<StatusMessage>,作为整个MarketSubscription方法的返回值,调用方可通过此任务获取请求的最终状态结果
当订阅请求发送成功后,回调Lambda会自动执行,完成MarketSubscriptionHandler的赋值,后续市场数据发生变化时,就能通过这个Handler处理相关逻辑。
内容的提问来源于stack exchange,提问作者geoffw123
相关产品推荐
相关产品推荐

