![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
QryStaL |
|
||||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 14 Всего: 32 |
Иногда просматриваю рефлектором сборки .NET Framework и натыкаюсь на конструкции следующего вида:
В чем суть? Почему просто не написать
? Это сообщение отредактировал(а) QryStaL - 18.3.2008, 13:11 -------------------- I don't need a reason being who I am... |
||||
|
|||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 63 Всего: 170 |
потому что нельзя разрешать создавать объекты напрямую из внешнего кода.
Это паттерн фабричный метод - класс содержит специальный метод, для дополнительных проверок, создания объекта, инициализаций и прочих танцев перед возвращением клиенту объекта... В твоем конкретном случае объект создается через вызов статического метода, который уже внутри себя создает объект конструктором. Смысла в этом не вижу - это не синглетон, и разделения обязанностей по созданию объекта между конструктором и статическим методом я не наблюдается. -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 14 Всего: 32 |
tol05, в том-то и дело, что проверок нету, и в статическом методе ровно одна строчка - создание и возврат экземпляра типа.
А в целом мысль понятна... -------------------- I don't need a reason being who I am... |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: нет Всего: 110 |
а в C# есть возможность создавать объекты разными способами (например, куча/стек)?
а то в C++ такие конструкции иногда используются для контроля за способом создания объекта Это сообщение отредактировал(а) maxim1000 - 18.3.2008, 15:29 -------------------- qqq |
|||
|
||||
Dblma |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 6.11.2007 Где: Moscow Репутация: нет Всего: 1 |
Класс в C# всегда создается в куче. Структура (struct или Value-type) - всегда в стеке.
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |