Иногда для некоторый класс играет чисто вспомогательную роль для другого класса и используется только внутри него. В этом случае логично описать его внутри существующего класса. Вот пример такого описания: using System; namespace test { class ClassA { //Вложенный класс private class ClassB { public int z; } //Переменная типа вложенного класса private ClassB w; //Конструктор public ClassA() { w=new ClassB(); w.z=35; } //Некоторый метод public int SomeMethod() { return w.z; } } class Test { static void Main(string[] args) { ClassA v=new ClassA(); int k=v.SomeMethod(); Console.WriteLine(k); } } }
Здесь класс ClassB объявлен внутри класса ClassA. Объявлен он со словом private, так что его экземпляры мы можем создавать только внутри класса ClassA (что мы и делаем в конструкторе класса ClassA). Методы класса ClassA имеют доступ к экземпляру класса ClassB (как, например, метод SomeMethod).
Вложенный класс имеет смысл использовать тогда, когда его экземпляр используется только в определенном классе. Кроме того, при использовании вложеных классов улучшается читаемость кода - если нас не интересует устройство основного класса, то разбирать работу вложенного класса нет необходимости.
Обратите также внимание, как вложенные классы показываются на вкладке ClassView:
Источник: |