Nested class - это статический класс, который вложен в другой класс.
Inner class - это обычный класс, который вложен в другой класс.
Вложенные классы обладают некоторыми специальными возможностями, которые удобны, когда нужен вспомогательный класс, работающий внутри содержащего его класса.
Не вложенные классы могут объявляться только как public
или internal
(по умолчанию являются internal
). Ко вложенным классам можно применять те же модификаторы доступа, что и к любым другим членам класса.
Вложенные классы, объявленные как public
, позволяют создавать экземпляры коду, внешнему по отношению к охватывающему классу. Нотация обращения к вложенному классу подобна уточнению пространств имен. В примере ниже демонстрируется создание экземпляра вложенного класса:
public class Container
{
public class Inner
{
}
}
public class Program
{
static void Main()
{
Container.Inner instance = new Container.Inner();
}
}
Также вложенные классы имеют доступ к приватным членам охватывающего их класса.
Другие особенности: