Существует ли аналог "структур" в C#
Формулировка задачи:
Доброго времени суток уважаемые!
Думаю, многим из вас знакомо такое понятие, как "стуктура" из C/C++ (она же "запись" из Delphi/Pascal и т.д.). Одним из достоинства данного типа данных, была возможность практически не ограниченной манипуляции этими данными без дополнительных "костылей". То есть, эти самые структуры (и массив структур) можно было например, записывать в файл (затем считывать эти данные оттуда), отправлять в поток, загружать и хранить их в памяти и работать с ними оттуда и т.д., что было не несомненно весьма удобно.
Хотелось бы найти подобный аналог для C#, желательно без использования unmanaged-кода. В данный момент, я приспособил под данные задачи формат XML. Всё конечно работает, но не настолько удобно, как например в C++, да и кода получается в разы больше.
Уверен, многие уже сталкивались с чем-то подобным. Подскажите пожалуйста, что ещё (кроме XML), можно использовать в качестве замены структур/записей?
P.S. Так же, неоспоримым удобством, являлась возможность вычислить размер одной "строки" записи/структуры. Например, можно было посчитать, что 1 экземпляр состоящий из int + int + int, занимает 12 байт, соответственно 10 таких экземпляров, будут занимать 120 байт и т.д., чего XML-формат сделать не позволяет...
Решение задачи: «Существует ли аналог "структур" в C#»
textual
Листинг программы
- using System;
- using System.IO;
- using System.Runtime.Serialization.Formatters.Binary;
- [Serializable]
- public struct Student
- {
- public string Name { get; set; }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Student st = new Student
- {
- Name = "Патрик"
- };
- BinaryFormatter formatter = new BinaryFormatter();
- using (MemoryStream stream = new MemoryStream())
- {
- formatter.Serialize(stream, st);
- byte[] bytes = stream.ToArray();
- foreach (var @byte in bytes)
- Console.Write("0x{0} ", @byte.ToString("X"));
- Console.ReadKey(true);
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д