Ошибка при инициализации делегата - C#
Формулировка задачи:
Добрый день,
Не смог ни понять ни найти, почему внутри метода можно создать объект делегата, а вне - нельзя? Код ниже:
namespace Chapter_Delegate { public class Media { public delegate int PlayerD(); public void Report(PlayerD Play) { if (Play() == 0) Console.WriteLine("File is played sucsefully."); else Console.WriteLine("File is invalid."); } } public class AudioFile { private int status; public int AudioPlay() { Console.WriteLine("Playing audio file..."); status = 0; return status; } } public class VideoFile { private int status; public int VideoPlay() { Console.WriteLine("Error by playing, video file is invalid..."); status = -1; return status; } } public class Tester { public void Run() { Media myMedia = new Media(); AudioFile myAu = new AudioFile(); VideoFile myVd = new VideoFile(); //instantiate the delegates Media.PlayerD MyDA = new Media.PlayerD(myAu.AudioPlay); //- если сделать вне метода Run() выдает ошибку.. Media.PlayerD MyDV = new Media.PlayerD(myVd.VideoPlay);// почему компилятор ссылается на Tester.myAu? //public void Run() - вне метода не работает, почему? //{ //call the delegates myMedia.Report(MyDA); myMedia.Report(MyDV); } } class Program { static void Main(string[] args) { Tester test = new Tester(); test.Run(); } } }
Решение задачи: «Ошибка при инициализации делегата»
textual
Листинг программы
public class Tester { readonly AudioFile myAu; readonly VideoFile myVd; readonly Media.PlayerD MyDA; readonly Media.PlayerD MyDV; public Tester() { myAu = new AudioFile(); myVd = new VideoFile(); MyDA = new Media.PlayerD(myAu.AudioPlay); MyDV = new Media.PlayerD(myVd.VideoPlay); } public void Run() { Media myMedia = new Media(); myMedia.Report(MyDA); myMedia.Report(MyDV); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д