[英]strategy design pattern problem delegates c#
我很難使用委托和策略模式。 有兩個獎學金。 我想挑選一個符合獎學金條件的學生。 沒用 對於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);
}
}
您的代答委托需要一個類型為Student的參數,因此請確保在if語句中傳遞該參數,並確保您正在對委托進行操作。
if (pickup(s))
candidates.Add(s);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.