我正在爲我的作業寫一個簡單的加密。我已經完成了它,現在我試圖用lambda表達式改進我的代碼。 lambda表達式後,列表中的對象不會更改。它是否使用局部變量?我怎樣才能用lambda表達式來做到這一點。我寫我的代碼如下賦值不會修改列表ForEach函數與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());
}
我在等待你的回答,謝謝...
什麼是'hash'的類型? – 2011-03-08 21:31:44
在這種情況下,將Lambda表達式添加到代碼中並不會有太大改進。我認爲Lambda表達式實際上會降低基於可讀性的代碼質量。在這種情況下,標準的ForEach將更具表現力的IMO。 – 2011-03-08 21:38:55
@Mark Byers:散列的類型是List,我試過HashSet,但它沒有我需要的IndexOf方法。 @Metro Smurf:謝謝你的建議你說的對,我很喜歡通過強制.NET功能:) – nepjua 2011-03-08 21:48:10