[英]One-line anonymous method
I have a question. 我有个问题。 Consider that scenerio: 考虑一下场景:
public override string Encrypt(string input)
{
Func<char, char> encryption = (c) => (char)chars[(c * k1 + k0) % 26];
string result = string.Empty;
foreach(char c in input)
result += encryption(c);
return result;
}
My question is, can we change that result += encryption(c)
line into something like in Func<char, char>
declaration? 我的问题是,我们可以将result += encryption(c)
行更改为Func<char, char>
声明中的内容吗? Can we write this anonymous method in one line ? 我们可以在一行中编写这种匿名方法吗?
您可以执行以下操作:
result = string.Concat(input.Select(c => encryption(c)))
You can try using Linq , ie 您可以尝试使用Linq ,即
public override string Encrypt(string input)
{
Func<char, char> encryption = (c) => (char)chars[(c * k1 + k0) % 26];
return string.Concat(input.Select(c => encryption(c)));
}
We can even get rid of encryption
: 我们甚至可以摆脱encryption
:
public override string Encrypt(string input) =>
string.Concat(input.Select(c => (char)chars[(c * k1 + k0) % 26]));
并不是说它非常易读,而是将整个方法简化为一行:
public override string Encrypt(string input) => string.Concat(input.Select(c => (char)chars[(c * k1 + k0) % 26]));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.