Пусть говорят, у меня есть класс Studentделегат должен быть перед основным методом
class Program
{
delegate bool del2(Student s); //I have to put this delegate before Main?
static void Main(string[] args)
{
List<Student> listStudent = new List<Student>()
{
... //adding student instances...
};
//delegate bool del2(Student s); Q1: why compile error if I put it here?
Predicate<Student> del1 = check;
Student s = listStudent.Find(del1);
Console.WriteLine("s is" + s.Name);
}
public static bool check(Student s) //Q2:why it need to be static method?
{
return s.Name == "Michael";
}
}
У меня есть два вопроса:
Почему я должен поставить del2 перед основным методом? del1 - делегат Predicate, я могу поместить его в основной метод, del2 также является делегатом, почему я не могу его также включить в основной метод?
Почему метод проверки должен быть статическим?
Это объявление типа. Так же, как объявление структуры или класса. Синтаксис C# требует, чтобы объявления типа не отображались внутри тела метода. Перемещение его * после * метода Main() отлично, просто не внутри. –