私のコードは次のようなものです:
Dictionary<string, string> specialCharacters = new Dictionary<string, string>();
specialCharacters.Add("@", "%");
specialCharacters.Add("*", "^");
List<Action<Employee>> listOfDel = new List<Action<Employee>>();
foreach (KeyValuePair<string, string> character in specialCharacters)
{
Action<Employee> replace = (empData) => empData.EmpName = empData.EmpName.ToString().Replace(character.Key, character.Value);
listOfDel.Add(replace);
//listOfDel.Add(new Action<Employee>((empData) => empData.EmpName = empData.EmpName.ToString().Replace(character.Key, character.Value)));
}
問題は、リスト listOfDel が同じアクションを参照していることです。これは、最後の character.Key, character.Value ((" ", "^") のペアの値を取る同じ関数 replace を参照するため、リスト内で異なるアクションを持つ結果が必要ですof actions listOfDel , where each method will have different value present. ("@", "%"), (" ", "^"); また、アクション デリゲートの新しいインスタンスを作成し、それを匿名メソッドとして使用してみました。コメント付きのコードを参照してください。問題は解決されていません。