我正在为我的作业写一个简单的加密。我已经完成了它,现在我正尝试使用lambda表达式改进代码。 lambda表达式后,列表中的对象不变。是否使用局部变量?我该如何使用lambda表达式来做到这一点。我写了我的代码如下
public override string Encrypt(string code)
{
List<Byte> encodedBytes = new List<Byte>(ASCIIEncoding.ASCII.GetBytes(code));
encodedBytes.ForEach(o => { if (hash.Contains(o))
o = hash.ElementAt((hash.IndexOf(o) + ShiftAmount) % hash.Count); });
return ASCIIEncoding.ASCII.GetString(encodedBytes.ToArray());
}
我正在等待您的答复,谢谢...
最佳答案
如果您想要更多与问题相关的解决方案,则将更适合
public static class Extensions
{
public static void ModifyWhere<T>(this List<T> list, Func<T, bool> condition, Func<T, T> act)
{
for (int i = 0; i < list.Count; i++)
{
if (condition(list[i]))
list[i] = act(list[i]);
}
}
}
该解决方案将以bool返回函数为条件,而return函数为动作的方法不是特定的。
以下是用法示例
mylist.ModifyWhere(someBoolReturningFunction, someTReturningFunction);