C # -delegate массив - как добавить методы tostring - PullRequest
0 голосов
/ 03 июля 2011

Можно ли добавить методы ToString в массив делегатов? Если так, как ?? вот код, который я написал:

public delegate string Task();

        public static void Main(string[] args)
    {
        ArrayList studentArray = new ArrayList();
        Course italianCook = new ItalianCookCourse { Teacher = "Ben Hodd" };
        Course seafoodCook = new SeafoodCookCourse { Teacher = "Harry Cotter"};
        Course sewingCourse = new SewingCourse
        {
            Teacher = "Margaret Mair",
            ChargePerStudent = scFee,
            CostPerStudent = 100.00m,
        };
        Course creativeWrite = new CreativeWritCourse { Teacher = "Mary Smith };
        Course businessWrite = new BusinessWritCourse { Teacher = "Mary Smith" };
        Task[] tasks = new Task(italianCook.ToString, seafoodCook.ToString, sewingCourse.ToString);

Сообщение об ошибке: «string Class.ToString ()» - «Ожидается имя метода»

Как метод tostring обрабатывать как строку, можно ли добавить его для отладки ??

1 Ответ

1 голос
/ 03 июля 2011

Предполагая, что вы исправили синтаксис, решением будет удалить () из конца ToString. Чтобы создать делегата на основе метода, вам нужно только дать его имя.

Task[] tasks = new Task[] { Class1.ToString, Class2.ToString }

Обратите внимание, что приведенный выше код на самом деле не компилируется. ToString () не является статическим методом, поэтому вам необходимо передать ссылку на объект вместе с именем функции:

object o = new object();
Task[] tasks = new Task[] { o.ToString };
...