![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| opozdaika |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 28.4.2008 Репутация: нет Всего: нет |
Я конечно глубоко зивиняюсь, что вновь поиднимаю это тему, но не доходит до меня. Все-таки можно или нет определить структуру, в которой есть массив постоянного размера? Я знаю, что классы располагаются в куче, а структуры - в стеке. И я знаю, что структуры передаются по значению, а классы по ссылке. И понимаю, что в связи с этим размер структуры должен быть мааааааленьким. НО все равно мне нужно это! У меня массивчик малюсенький, но для удобства он должен быть внутри структуры!
Ниже результат моих поисков. Вариант с new не очень меня привлекает, т.к. такой малюсенький массивчик лучше хранить физически в самой структуре. Кстати, вариант с разбиением массива на N отдельных скалярных полей - оффтоп.
|
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
opozdaika, для какого удобства?
Частью структуры можно сделать fixed size buffer, если структура unsafe. Чтобы откомпилировалось без CS0227, нужно поставить галочку Allow Unsafe Code на закладке Build в свойствах проекта. |
|||
|
||||
| Robust |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 22.6.2008 Репутация: 1 Всего: 1 |
Попробуй добавить конструктор в котором инициализируются все поля структуры
Вроде такого:
Это сообщение отредактировал(а) Robust - 28.7.2008, 18:36 |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
||||
|
||||
| Robust |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 22.6.2008 Репутация: 1 Всего: 1 |
Нет. Массив - это ссылочный тип. В структуре будет храниться ссылка на массив, который будет создаваться в куче, со всеми вытекающими последствиями. А чтобы выделять массив стеке нужно использовать unsafe код. Например так:
И не забудь поставить флажок в свойстве проекта "Allow unsafe code" |
||||
|
|||||
| opozdaika |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 28.4.2008 Репутация: нет Всего: нет |
Robust, да все правильно. Так у меня работает. Но мне не понравилось, что нужно везде, где работаешь со структурой, писать unsafe. Да еще и эта галочка подозрительная... Поэтому я отказался от использования struct в пользу class. Наверное, лучше забыть о том, что в C# есть структуры.
Это сообщение отредактировал(а) opozdaika - 30.7.2008, 14:02 |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
Это и написано в первом посте топика. При чем тут вообще конструктор и инициализация полей?
А это во втором посте топика. Это сообщение отредактировал(а) PashaPash - 30.7.2008, 17:33 |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |