У меня есть следующие функции делегата в Test Unit, и он прекрасно работаетСоздание функции делегата, который принимает параметры
List<Record> RecordSet = FileData.RecordSet;
Record result = RecordSet.Find(
delegate(Record r)
{
return r.UserID == "12345";
}
);
и он прекрасно работает. Мне нужно выполнить этот поиск несколько раз, поэтому я попытался добавить его в функцию, которую я мог бы вызвать, которая приняла UserID в качестве параметра, она очень похожа, но по какой-то причине ALWAYS возвращает значение null.
public Record findRecord(List<Record> RecordSet, string UserID)
{
Record result = RecordSet.Find(
delegate(Record r)
{
return r.UserID.Trim() == UserID;
}
);
return null;
}
Я также попытался его жесткое кодирование «12345» в качестве значения UserID, который также возвращает нуль. Еще более странно то, что когда я в режиме отладки, и я смотрю на значения в RecordSet, я вижу запись с точным UserID. Тем не менее по какой-то причине никаких результатов, однако один и тот же код и одни и те же данные в первой функции выше возвращает результат просто отлично.
Кроме того, FYI, я увлекаюсь решение LINQ проблемы:
Record result = RecordSet.Where(x => x.UserID == "12345").Select(x => x).First();
Но я специально искал причин, почему решение делегат неудачу
Что вы думаете: 'return null;' в конце вашего метода –
вы указали мне точное решение. изменить его на 'Записать результат = RecordSet.Find ( делегат (Запись г) { возврата r.UserID.Trim() == Идентификатор_пользователя; } ); результат возврата; ' работал. Я запутался, потому что предположил, что возвращение внутри делегата возвращает функцию. когда на самом деле он просто возвращался к переменной результата, которая, в свою очередь, возвращала значение null. общий новичок ошибка. Спасибо, @ conrad-frix. – Josh