У меня проблемы с использованием делегатов и шаблона стратегии.Есть две стипендии.Я хочу выбрать случайного студента, который соответствует критериям стипендии.Не работаетДля строки if (pickup) отображается ошибка «Не удается неявно преобразовать тип« StudentGroup.Pickup »в« bool ».Как это решить?Спасибо.Есть ли другая ошибка?Спасибо.
public class Student
{
public string name;
public int year; //1 to 4
public double gpa; //0-4.0
}
public class StudentGroup
{
private List<Student> students = new List<Student>();
private Random rnd = new Random();
public delegate bool Pickup(Student x);
public void AddStudent(string name, int year, double gpa)
{
Student s = new Student();
s.name = name;
s.year = year;
s.gpa = gpa;
students.Add(s);
}
public Student PickFor(Pickup pickup)
{
List<Student> candidates = new List<Student>();
foreach (Student s in students)
{
if (pickup)
candidates.Add(s);
}
if (candidates.Count > 0)
return candidates[rnd.Next(candidates.Count)];
else
return null;
}
}
public class Program
{
public static void Main()
{
StudentGroup sg = new StudentGroup();
sg.AddStudent("Peter", 2, 3.2);
Student candidate1 = sg.PickFor(s => s.gpa >= 3.8);
Student candidate2 = sg.PickFor(s => s.gpa >= 3.0 && s.year == 1);
}
}