如何使用/理解lambda表达式?

Sim*_*mon 1 c# lambda

我有以下方法:

private byte[] GetEmailAsBytes(string lstrBody)
{
   byte[] lbytBody;
   ASCIIEncoding lASCIIEncoding = new ASCIIEncoding();
   lbytBody = lASCIIEncoding.GetBytes(lstrBody);
   return lbytBody;
}
Run Code Online (Sandbox Code Playgroud)

我想知道这是否可以转换为lambda表达式.我是新手.我试过了:

Func<string> BodyToBytes = x => {
        ASCIIEncoding lASCIIEncoding = new ASCIIEncoding();
        return lASCIIEncoding.GetBytes(x);
}
Run Code Online (Sandbox Code Playgroud)

但这不编译.简单地说,我希望将字符串转换为一系列字节,并且为了感兴趣,我们希望使用lambda表达式来完成此操作.

wsa*_*lle 6

该表达式Func<string>相当于一个不接受任何参数并返回a的函数string.

你的例子清楚地返回一个byte[],但你希望它接受一个string并返回一个byte[].

要解决此问题,请更改BodyToBytes以匹配以下内容.请注意,参数的类型首先是逗号分隔,后跟返回类型.在这种情况下,x将是类型string.

Func<string, byte[]> BodyToBytes = x => {
        ASCIIEncoding lASCIIEncoding = new ASCIIEncoding();
        return lASCIIEncoding.GetBytes(x);
}
Run Code Online (Sandbox Code Playgroud)

有关参考,请参阅Func TypeMSDN文档.