我正在为我的作业写一个简单的加密。我已经完成了它,现在我正尝试使用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);

09-13 12:36
查看更多