![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Чем обосновывается запрет на описание конструктора по умолчанию у структур ?..
Скажем, характер данных у меня таков, что для их описания семантически более подходит структура (группа свойств/параметров). Структура имеет несколько полей, описывающих некоторые свойства. Необходим способ создания структуры с параметрами, инициализируемыми по умолчанию. Указывать инициализаторы по умолчанию при описании структуры нельзя (в отличие от классов), конструктор по умолчанию описывать тоже нельзя... К чему так сильно урезать гибкость структур... |
|||
|
||||
| QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 14 Всего: 32 |
Вот как об этом пишет Джеффри Рихтер.
"Есть редкие ситуации, когда runtime должен инициализировать value-тип, но не может вызвать его конструктор по умолчанию. Это может произойти, например, если локальный для потока value-тип должен быть размещен и инициализирован, когда неуправляемый поток в первый раз исполняет управляемый код. В такой ситуации runtime не может вызвать конструктор типа, но обеспечивает инициализацию всех членов 0 или null. По этой причине рекомендуется не определять для value-типов конструкторов без параметров." -------------------- I don't need a reason being who I am... |
|||
|
||||
| CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Тогда должен быть альтернативный способ решения ситуации из поста 1...
|
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
ИМХО, это одна из недоработок .NET, сам часто об это спотыкался. Ну если уж про это Рихтер пишет так - значит в самом деле всё серьёзно
-------------------- ![]() |
|||
|
||||
| CyraxZ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
Тогда 2 варианта:
1. Конструктор с параметрами - вызываем и передаём кучу параметров... 2. Пишем статический метод класса (без параметров), который создаёт и возвращает нужный нам объект с параметрами по умолчанию... Собственно, остановился на 2-м варианте... |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |