0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 41
|
||||||
1 | ||||||
Подобие union в с#09.10.2016, 19:30. Показов 4311. Ответов 25
Метки нет (Все метки)
Привет всем!
Столкнулся с проблемой, в с# нет объединения в структур. Кто как выходит из этой ситуации. Мне необходимо массив byte[] data раскидать по переменным.
Эту структуру написал с использованием marshal, explicite, offset. Но, отладчик не позволяет мне запустить код, жалуется на массив byte[] data, хотя в fieldoffset я всем переменным указал их размеры принудительно.
0
|
09.10.2016, 19:30 | |
Ответы с готовыми решениями:
25
Как на C# реализовать подобие union в С++ C++ union на C# C++ Union в C# Аналог union в C# |
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,628
|
|
09.10.2016, 19:45 | 2 |
C++ union in C#
http://stackoverflow.com/quest... in-c-sharp Существует ли аналог union из С++ в С#?
0
|
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 41
|
|
09.10.2016, 20:24 [ТС] | 3 |
Я написал в теме что все это уже проделал, загвоздка с массивами в структуре... Массивы не работают в структурах с пара етрами offset.
0
|
.NET senior
441 / 359 / 137
Регистрация: 23.09.2016
Сообщений: 980
|
|
09.10.2016, 20:49 | 4 |
Я в подобных случаях изменяю структуру представления данных при обязательном сохранении функциональности.
0
|
6512 / 4088 / 1606
Регистрация: 09.05.2015
Сообщений: 9,554
|
||||||
09.10.2016, 20:51 | 5 | |||||
А если так
0
|
.NET senior
441 / 359 / 137
Регистрация: 23.09.2016
Сообщений: 980
|
||||||
09.10.2016, 21:23 | 6 | |||||
Someone007, тогда уж
0
|
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 41
|
|
09.10.2016, 21:36 [ТС] | 7 |
Оба варианта не работают. Одна и та же ошибка.
0
|
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,628
|
|
09.10.2016, 21:49 | 8 |
C# array within a struct
http://stackoverflow.com/quest... n-a-struct How to initialize char array in struct http://stackoverflow.com/quest... -in-struct Добавлено через 49 секунд Setting a byte array within a structure https://social.msdn.microsoft.... rplanguage
0
|
6512 / 4088 / 1606
Регистрация: 09.05.2015
Сообщений: 9,554
|
|
09.10.2016, 22:34 | 9 |
bax_tang, вы думаете я не проверил этот вариант первым делом? Там исключение возникает в runtime, а вот мой вариант вполне себе рабочий.
0
|
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 41
|
|
09.10.2016, 22:34 [ТС] | 10 |
Тоже все не то, читал эти статьи прежде чем про маршал узнал.
0
|
6512 / 4088 / 1606
Регистрация: 09.05.2015
Сообщений: 9,554
|
|
09.10.2016, 22:35 | 11 |
0
|
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 41
|
||||||
09.10.2016, 22:47 [ТС] | 12 | |||||
Someone007, раьотает? Пытаюсь передать byte[] data, выдат ошибку, что данные не являются byte*.
Добавлено через 1 минуту Someone007, неявное преобразование типа byte[] в byte*. В случае вашего кода. Добавлено через 4 минуты
0
|
6512 / 4088 / 1606
Регистрация: 09.05.2015
Сообщений: 9,554
|
||||||
09.10.2016, 23:49 | 13 | |||||
Ну так вы неправильно работаете с указателями, сама структура корректна и работает...
0
|
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 41
|
|
10.10.2016, 09:21 [ТС] | 14 |
В структуре тип объявлен как fixed Byte DATA[16];
В обработчике мы пытаемся ему передать данные типа byte[] Data; Соответственно, он ругается, что Ошибка 1 Использование буферов фиксированного размера, содержащихся в нефиксированных выражениях, невозможно. Попробуйте использовать оператор fixed. НО: Fixed мы уже используем. Как правильно?
0
|
12568 / 8747 / 1311
Регистрация: 21.01.2016
Сообщений: 32,805
|
|
10.10.2016, 09:27 | 15 |
0
|
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 41
|
|
10.10.2016, 09:31 [ТС] | 16 |
0
|
12568 / 8747 / 1311
Регистрация: 21.01.2016
Сообщений: 32,805
|
|
10.10.2016, 10:17 | 17 |
Blastry, ну так ты не пытайся засунуть ссылку на массив в структуру, а руками данные в неё затолкай, как в примере товарища Someone007
0
|
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 41
|
|
10.10.2016, 10:37 [ТС] | 18 |
0
|
12568 / 8747 / 1311
Регистрация: 21.01.2016
Сообщений: 32,805
|
|
10.10.2016, 10:43 | 19 |
Blastry, а метод в котором данный код размещён помечен ключевым словом unsafe?
Добавлено через 2 минуты Данные нужно переносить копированием по одному байту, в цикле. Прямое присвоение невозможно.
0
|
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 41
|
|||||||||||
10.10.2016, 10:44 [ТС] | 20 | ||||||||||
0
|
10.10.2016, 10:44 | |
10.10.2016, 10:44 | |
Помогаю со студенческими работами здесь
20
Существует ли аналог union из С++ в С#? union как определить из какой таблице запись после UNION? Union UNION Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
|
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
|
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
|
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
|
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
|
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
|
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
|
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций
История планшетных компьютеров началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые. . .
|
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
|
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы
В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
|
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
|
Как без исключения проверить существование файла в Python
InfoMaster 19.01.2025
При разработке программного обеспечения на Python часто возникает необходимость проверить существование файла перед выполнением операций с ним. Это критически важная задача, которая помогает избежать. . .
|