2014-10-24 4 views
0

Я не понимаю, почему это не работает для меня. Я не могу получить доступ к экземпляру myList из процедуры GetFiles(). Если я копирую код и помещаю его в локальную область, он отлично работает. Однако это не совсем то, что я хочу сделать, потому что я хочу получить доступ к объекту myList из других процедур и/или функций. Может кто-то прокомментировать.Невозможно получить доступ к экземпляру класса из статической процедуры. C#

GetFileList myList = new GetFileList(@"c:\temp"); 

    static void Main(string[] args) 
    { 

     GetFiles(); 
     Console.ReadKey(); 
    } 

    public static void GetFiles() 
    { 
     //Gets files and lists last access time 

     for (int i = 0; i < myList.fileList.Length; i++) 
     { 
      Console.WriteLine(myList.fileList[i]); 

     } 
    } 
+0

** static ** GetFileList myList ... – Athari

ответ

1

Вы должны объявить myList как статический

static GetFileList myList = new GetFileList(@"c:\temp"); 

для того, чтобы иметь возможность доступа к нему внутри статического метода.

Или же, передать его как параметр

GetFileList myList = new GetFileList(@"c:\temp"); 

public static void GetFiles(GetFileList listOfFiles) 
{ 
    //Gets files and lists last access time 

    for (int i = 0; i < listOfFiles.fileList.Length; i++) //using param 
    { 
     Console.WriteLine(listOfFiles.fileList[i]); //using param 

    } 
} 

GetFiles(myList); 
+0

Хорошо, это имеет смысл. Спасибо! –

1

Вы не можете получить доступ к входу в инстансе поля из static методов, поскольку static методов не принадлежат к какой-либо инстанции, так что вы должны объявить myList как static.

Смежные вопросы