В экстазе
|
|
1 | |
Существует ли аналог "структур" в C#26.11.2012, 02:28. Показов 3469. Ответов 17
Метки нет (Все метки)
Доброго времени суток уважаемые!
Думаю, многим из вас знакомо такое понятие, как "стуктура" из C/C++ (она же "запись" из Delphi/Pascal и т.д.). Одним из достоинства данного типа данных, была возможность практически не ограниченной манипуляции этими данными без дополнительных "костылей". То есть, эти самые структуры (и массив структур) можно было например, записывать в файл (затем считывать эти данные оттуда), отправлять в поток, загружать и хранить их в памяти и работать с ними оттуда и т.д., что было не несомненно весьма удобно. Хотелось бы найти подобный аналог для C#, желательно без использования unmanaged-кода. В данный момент, я приспособил под данные задачи формат XML. Всё конечно работает, но не настолько удобно, как например в C++, да и кода получается в разы больше. Уверен, многие уже сталкивались с чем-то подобным. Подскажите пожалуйста, что ещё (кроме XML), можно использовать в качестве замены структур/записей? P.S. Так же, неоспоримым удобством, являлась возможность вычислить размер одной "строки" записи/структуры. Например, можно было посчитать, что 1 экземпляр состоящий из int + int + int, занимает 12 байт, соответственно 10 таких экземпляров, будут занимать 120 байт и т.д., чего XML-формат сделать не позволяет...
0
|
26.11.2012, 02:28 | |
Ответы с готовыми решениями:
17
Существует ли аналог strtol из C++ Существует ли аналог union из С++ в С#? Существует ли аналог Canvas в Qt Существует ли ssd аналог? |
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
26.11.2012, 02:31 | 2 |
1
|
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
|
|
26.11.2012, 07:51 | 3 |
каким боком тут хмл?
0
|
В экстазе
|
|
26.11.2012, 10:20 [ТС] | 5 |
Помогите пожалуйста с примером, как перевести структуру в массив байтов, для того, что бы записать её в поток (и считать потом её из потока, соответственно)?
По возможности, хотелось бы максимально простой пример, для "студентов". Спасибо.
0
|
442 / 410 / 132
Регистрация: 21.01.2012
Сообщений: 974
|
||||||
26.11.2012, 10:25 | 6 | |||||
1
|
В экстазе
|
|
26.11.2012, 10:33 [ТС] | 7 |
Всем большое спасибо, разбираюсь с примерами.
XML - в моём случае, это 1 из способов хранения "разношерстной" информации, структурированной определённым образом.
0
|
Не осилил Linux
267 / 61 / 6
Регистрация: 06.08.2009
Сообщений: 223
|
|
26.11.2012, 16:13 | 8 |
wolfalone
1. Изучите такое понятие как сериализация 2. Изучите что такое struct в C# 3. Изучите сериализаторы в .NET, в том числе XmlSerializer 4. Наслаждайтесь профитом.
0
|
В экстазе
|
|
26.11.2012, 16:59 [ТС] | 9 |
Это понятие мне знакомо
Всегда думал, что struct по своей сути не отличается от struct'a в C++ Спасибо, изучаю Уже на пол пути к наслаждению, спасибо
0
|
Не осилил Linux
267 / 61 / 6
Регистрация: 06.08.2009
Сообщений: 223
|
|
26.11.2012, 17:13 | 10 |
wolfalone если знакомы, то почему слово сериализация впервые появилось в моем посте, а не в заголовке темы?
для получения размера структуры - Marshal.SizeOf(typeof(MyStruct)) для сериализации в поток байтов - BinaryFormatter
1
|
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
|
|
26.11.2012, 17:45 | 11 |
А как приравнять структуру к null подскажите,пожалуйста?
0
|
I ♥ C#
470 / 261 / 25
Регистрация: 07.05.2010
Сообщений: 567
|
|
26.11.2012, 17:47 | 12 |
1
|
I ♥ C#
470 / 261 / 25
Регистрация: 07.05.2010
Сообщений: 567
|
|
26.11.2012, 18:05 | 14 |
Никак, null могут принимать только ссылочные типы. Впрочем попробуйте почитать о Nullable<T>, возможно это то, что вам нужно.
1
|
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
|
|
26.11.2012, 18:27 | 15 |
Это то, что мне нужно , но не получается им воспользоваться. Не приведёте пример?
0
|
Не осилил Linux
267 / 61 / 6
Регистрация: 06.08.2009
Сообщений: 223
|
||||||
26.11.2012, 18:30 | 16 | |||||
0
|
В экстазе
|
||||||
28.11.2012, 01:15 [ТС] | 17 | |||||
Подскажите пожалуйста, существует ли какая-то возможность читать структуры записанные С++ программой?
Добавлено через 22 минуты Я имею в виду, есть некий файл, созданный программой на C++; Заранее известно, что этот файл представляет из себя стуктуру формата:
0
|
Заблокирован
|
|||||||||||
28.11.2012, 02:01 | 18 | ||||||||||
вопрос поставлен совершенно не корректно, но рискну предположить.
Только для примера. Так писать не надо. С++
0
|
28.11.2012, 02:01 | |
28.11.2012, 02:01 | |
Помогаю со студенческими работами здесь
18
Существует ли аналог выражению в паскале '0'.'9' в с++? Существует ли аналог ADO в Lazarus? Существует ли в ASP аналог EVAL? Существует ли аналог функции Eval из VB 6.0 Существует ли аналог ReoGrid на WPF Существует ли аналог iconv() а java Существует ли бесплатный аналог Adobe Dreamweaver ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |