Вложенные классы

C Sharp > Вложенные классы
16.01.2018 17:23:46



Статья:

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

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

Например, контейнерный класс может содержать коллекцию объектов. Предположим, что требуется некоторое средство для выполнения итерации по всем содержащимся объектам, чтобы позволить внешним пользователям, выполняющим итерацию, поддерживать маркер, или некую разновидность курсора, который запоминает свое текущее место во время итерации.

Это распространенный подход в проектировании. Избавление пользователей от необходимости хранить прямые ссылки на содержащиеся в коллекции объекты обеспечивает большую гибкость в отношении изменения внутреннего поведения контейнерного класса без разрушения кода, использующего этот контейнерный класс.

Вложенные классы по нескольким причинам предоставляют отличное решение такой проблемы.

 
public class UserParameters
{
    public string testUserParameters { get; set; }
}
 
public class AllPrameters
{
    public string testAllParameters { get; set; }
}
 
public class Parameters
{
    public Parameters()
    {
        userParameters = new UserParameters();
        allPrameters = new AllPrameters();
    }
 
    public UserParameters userParameters;
    public AllPrameters allPrameters;
}
//вызов
 
Parameters g = new Parameters();
g.userParameters.testUserParameters = "test";

 

вложенный класс