![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Rockie |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: нет Всего: 31 |
Здравствуйте!
Мне нужно создать структуру, в которой располагается 2 массива фиксированной длины. пытаюсь делать так:
Добавлено через 5 минут и 50 секунд Пытаюсь создать конструктор - конструктор по ждефолту вроде запрещен.. при добавлении коснтруктора с параметром получаю следующую ошибку:
-------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
||||||
|
|||||||
| thomas |
|
||||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 6 Всего: 65 |
Rockie,
Структуры это типы значений. Потому как структуры являеются типами значений операция new с ними работает иначе, чем с классами. В частности, компилятор всегда генерирует конструктор по умолчанию БЕЗ ПАРАМЕТРОВ, который переопределить НЕВОЗМОЖНО. Поэтому тебе сначала нужно инициировать твои массивы, а уже потом присваивать их твоей структуре.
По моему так. Или так
Это сообщение отредактировал(а) thomas - 22.10.2007, 00:43 -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
||||
|
|||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 7 Всего: 48 |
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| 1stain |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 3 Всего: 40 |
с вашего позволения, вставлю свои 5коп.
когда ты пишешь так:
,на самомо деле компилятор создает конструктор умолчанию, в котором создает массив элементов и инициализирует их значениями по умолчанию. А так как для структурных (Value) типов конструктор по умолчанию переопределять нельзя, то такая запись не прокатывает. Кстате, исходя из этого "инициализирует их значениями по умолчанию", вот это
абсолютно не имеет смысла -------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
||||
|
|||||
| archeg |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 6.1.2007 Где: Киев Репутация: 4 Всего: 27 |
Ну и я немного добавлю.... Пихать в структуры массивы - очень и очень плохая идея.
Структуры созданы для того чтобы увеличить производительность при малых объемах памяти. По-скольку массив - занимает не мало памяти его лучше пихать в класс - структура просто не играет никакой роли в таком случае И есть еще одно но. Массивы в структуре вообще нельзя инициализировать. В том дело что в предыдущих примерах инициализация происходит в конструкторе (структуры требуют инициализацию всех полей в конструкторах), но с другой стороны структура может быть создана без ключего слова new - в таком случае конструктор просто не вызывается, а все поля инициализируются нулями - в данном случае null. Так что в таком случае вы просто не знаете, проинициализированы или нет поля структуры. Впринципе в структуры лучше пихать только valuable-типы из-за этой проблемы Это сообщение отредактировал(а) archeg - 22.10.2007, 11:38 -------------------- ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru) Дядька всегда можно спросить в аське, если не задалбывать - не откажет И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои ;) |
|||
|
||||
| Rockie |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: нет Всего: 31 |
Ну так как мне все же правильно сделать инициализацию? Мне нужно логически объеденить два массива, в структуру либо класс. Как это делается на C#?
-------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
|||
|
||||
| Wanderer2019 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 937 Регистрация: 3.12.2004 Где: Санкт-Петербург/П рага Репутация: 2 Всего: 17 |
||||
|
||||
| Rockie |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: нет Всего: 31 |
Wanderer2019, ан не делает этого
Студия MSVS 2005, .NET 2.0 Положим у меня есть код на С++. Каким образом он будет выглядеть применительно к C# (учитывая что в данном случае в C# не будем использовать указатели?
-------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
||||
|
|||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 36 Всего: 170 |
stab, 1stain, archeg уже ответили тебе.
по-моему (если я еще что-то помню), то даже в плюсах массив, указатель на массив и указатель на первый элемент массива - одно и тоже. В шарпе - тем более. Деструктор для массива в шарпе не нужен (если конечно этот массив не содержит неуправляемые ресурсы твой код будет выглядеть так:
Это сообщение отредактировал(а) tol05 - 22.10.2007, 21:55 -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 7 Всего: 48 |
Rockie, расскажи зачем тебе эти массивы? как и для чего ты их собираешся использовать? может быть задача действительно требует структуры, а не класса..
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| 1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 3 Всего: 40 |
да хоть в блокноте пиши, хоть в 2008-й студии. Компилятор тебе же ясно написал, что оператор присваивания нельзя использовать в теле класса, структуры или интерфейса вне функций. Засунь вот это
в конструктор формы после вызова Initialize() и будед тебе щасте. з.ы. имхо начинать знакомство с языком стоит все-таки с консольных приложений -------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
| Rockie |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: нет Всего: 31 |
Это так, но хотелось бы еще работающий код. Спасибо!
[offtop]Ну, вообще-то нет: в С++ массив и указатель на первый элемент это не одно и то же(если речь об этом), хотя неявно массив приводится к указателю.[/offtop] Спасибо кто помог разобраться! -------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
|||
|
||||
| tol05 |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 36 Всего: 170 |
я имел в виду что
и вот еще об этом же и, еще
а ты что? -------------------- На хорошей работе и сны хорошие снятся. |
||||||
|
|||||||
| Wanderer2019 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 937 Регистрация: 3.12.2004 Где: Санкт-Петербург/П рага Репутация: 2 Всего: 17 |
||||
|
||||
| Rockie |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: нет Всего: 31 |
tol05, то, что и написал
-------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
||||||
|
|||||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |