You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将C#中的lambda表达式转换为非lambda的常规语法

C# Lambda表达式反向改写方案

原代码逻辑拆解

原代码中XmlSchema.Read方法的第二个参数是ValidationEventHandler类型的委托,用于接收XML Schema验证过程中的错误回调。你看到的(s, e) => {Debug.WriteLine("Xml schema validation error : " + e.Message);}就是对应委托的Lambda匿名实现。

无Lambda的改写版本

写法1:命名方法实现(无任何匿名语法,可读性最高)

首先在当前类中定义独立的错误处理方法:

// 验证错误处理方法,签名和ValidationEventHandler委托完全匹配
private void SchemaValidationErrorHandler(object sender, ValidationEventArgs e)
{
    Debug.WriteLine("Xml schema validation error : " + e.Message);
}

修改原调用代码,直接传入方法名作为委托参数:

XmlSchema schema = XmlSchema.Read(schemaStream, SchemaValidationErrorHandler);

注意:如果调用逻辑在静态方法中,需要给SchemaValidationErrorHandler加上static修饰符。

写法2:匿名方法实现(无需额外定义独立方法,也不使用Lambda语法)

如果不想新增独立方法,可以用C#原生的匿名方法语法实现,和原代码结构更接近:

XmlSchema schema = XmlSchema.Read(schemaStream, delegate(object s, ValidationEventArgs e)
{
    Debug.WriteLine("Xml schema validation error : " + e.Message);
});

两种写法的运行效果和原Lambda版本完全一致。

内容的提问来源于stack exchange,提问作者zooid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:18:03