Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > not-public constructor |
Автор: QryStaL 18.3.2008, 13:10 | ||||
Иногда просматриваю рефлектором сборки .NET Framework и натыкаюсь на конструкции следующего вида:
В чем суть? Почему просто не написать
? |
Автор: tol05 18.3.2008, 14:18 |
потому что нельзя разрешать создавать объекты напрямую из внешнего кода. Это паттерн фабричный метод - класс содержит специальный метод, для дополнительных проверок, создания объекта, инициализаций и прочих танцев перед возвращением клиенту объекта... В твоем конкретном случае объект создается через вызов статического метода, который уже внутри себя создает объект конструктором. Смысла в этом не вижу - это не синглетон, и разделения обязанностей по созданию объекта между конструктором и статическим методом я не наблюдается. |
Автор: QryStaL 18.3.2008, 15:09 |
tol05, в том-то и дело, что проверок нету, и в статическом методе ровно одна строчка - создание и возврат экземпляра типа. А в целом мысль понятна... |
Автор: maxim1000 18.3.2008, 15:25 |
а в C# есть возможность создавать объекты разными способами (например, куча/стек)? а то в C++ такие конструкции иногда используются для контроля за способом создания объекта |
Автор: Dblma 18.3.2008, 15:46 |
Класс в C# всегда создается в куче. Структура (struct или Value-type) - всегда в стеке. |