Чтение/запись структуры - 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; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д