–ешение - Can not access a nonstatic member of outer type via nested type

10:03:2013 –≥.

¬ заметке рассматриваетс€ способ решени€ ошибки компил€ции can not access a nonstatic member of outer type via nested type.

“акую ошибку встречают обычно начинающие разработчики, или разработчики Java, которые пытаютс€ написать свой код на .NET. ќшибка эта св€зана с использованием вложенных классов.

–ассмотрим пример:

class  A
{
   string stringA = "any string";
  
   class  B
   {
       public void ChangeStringA(string newString)
       {
          stringA = newString;
       }
   }
}

ѕри попытке компил€ции возникнет ошибка can not access a nonstatic member of outer type via nested type. ƒело в том, что в отличии от Java вложенные классы не могут иметь доступа к элементам родительского и €вл€ютс€ обособленными.

ƒл€ того, чтобы решить данную проблему, можно предусмотреть передачу ссылки на экземпл€р класса A в конструктор класса B, чтобы иметь возможность мен€ть любые объекты класса A внутри класса ¬.

classclassA A
{
   string stringA = "any string";
  
   class classAB
   {
       A parentInstance;

       public  B (A instance)
       {
          parentInstance = instance;

       }   
  
       public void ChangeStringA(string newString)
       {
          parentInstance.stringA = newString;
       }
   }
}

¬ данной модификации пример будет работать - доступ к переменной класса ј будет осуществл€тьс€ через переменную родительсткого класса, котора€ была получена как ссылка.

ѕример работает везде на платформе .NET - C#, VB.NET, Mono .NET.

 

ƒобавить комментарий


«ащитный код
ќбновить

« –ешение:ѕарсинг int? или int, допускающий нулевые значени€ (nullable) из строки C# «амена выделенного текста в TextBox C# Windows Forms »

‘отоальбом

fotic.jpg

ќблако “егов