Где и как использовать вложенные классы? [дубликат]

10
задан Freshblood 29 June 2010 в 18:54
поделиться

4 ответа

Я думаю, вы слишком щедры на вложенные классы. Взгляните на это руководство по проектированию вложенных типов.

Не используйте вложенные типы, если выполняются следующие условия:

  • Тип должен быть создан с помощью клиентский код. Если у типа есть общедоступный конструктор, вероятно, не должен быть вложенными. Обоснование этого рекомендация заключается в том, что если вложенный тип может быть создан, это указывает что тип имеет место в библиотека сама по себе. Вы можете создать его, используйте его и уничтожьте без используя внешний тип. Следовательно, это не должны быть вложенными. Внутренний тип не следует широко повторно использовать за пределами внешнего типа без отношение к внешнему типу.
  • Ссылки на тип обычно объявлен в клиентском коде.

Фигуры могут принадлежать доске (собрание фигур в качестве члена?), Но могут сосуществовать без нее. Вы можете, например, хотите повторно использовать доски без элементов (темы и т. д.), а также повторно использовать элементы без доски (позиции и т. д.).

11
ответ дан 3 December 2019 в 23:11
поделиться

Если вы действительно думаете, что вложенные классы имеют смысл для вашего дизайна (см. Наставления Тима Шмелтера), но чувствуете, что размер файла слишком велик, использование частичных классов нормально для разделения вложенного класса определения в свои собственные файлы. Или, если вложенные классы сами по себе достаточно малы, но у вас их много, поместите все вложенные классы в один частичный файл.

Parent.cs:

public partial class Parent
{
    void SomeMethod()
    {
        Nested1 n1 = new Nested1();
        Nested2 n2 = new Nested2();
    }
}

Nested.cs:

public partial class Parent
{
    private class Nested1
    {

    }
    private class Nested2
    {

    }
}
0
ответ дан 3 December 2019 в 23:11
поделиться

Для хорошего дизайна класс перемещения Promote должен быть вложен в Пешка, потому что только пешка может продвинуться.

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

1
ответ дан 3 December 2019 в 23:11
поделиться

Закрытые члены родительского класса доступны для методов Nexted Class.

Nexted класс позволяет снизить сложность без широкой области применения.

2
ответ дан 3 December 2019 в 23:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: