Ошибка при инициализации делегата - 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);
}
}