Чтение/запись структуры - C#
Формулировка задачи:
Всем привет! Есть файл, в который записана структура. По сути это дерево и соответственно в каждом узле есть поле типа самого узла. Вот как они записаны на C++ и Delphi. Как ее правильно объявить в C# и как потом считывать?
Проблема в Parent и в массивах... На данный момент считываю все (кроме 2х последних массивов) в массив байт и ч-з маршалинг передаю в переменную, затем по одному считываю массив Indexes, затем просто пропускаю Links в файле, начинаю считывать следующие узлы и присваиваю их элементам Links. Но как-то это кривовато... Мб есть способ просто считать целиком узел ничего не пропуская? И как узел записать в файл?
#pragma pack(1)
typedef struct TNode
{
char Name[11];
void *Parent;
bool Checked;
int LinksCount;
DWORD Indexes[15];
TNode *Links[15];
}Tnode;
#pragma pack(pop)type PNode = ^Tnode; TNode = packed Record Name: String[10]; Parent: Pointer; Checked: boolean; LinksCount: integer; Indexes: array [0..14] of DWORD; Links: array [0..14] of PNode; End;
Решение задачи: «Чтение/запись структуры»
textual
Листинг программы
public class TNode
{
public string Name = new string(new char[11]);
public object Parent;
public bool Checked;
public int LinksCount;
public uint[] Indexes = new uint[15];
public TNode[] Links = Arrays.InitializeWithDefaultInstances<TNode>(15);
}
// This class can be used by anyone provided that the copyright notice remains intact.
internal static class Arrays
{
internal static T[] InitializeWithDefaultInstances<T>(int length) where T : new()
{
T[] array = new T[length];
for (int i = 0; i < length; i++)
{
array[i] = new T();
}
return array;
}
}