Я пытаюсь сделать переход от C к C#, и у меня есть несколько вопросов о сохранении объектов в файлах и сериализации.Сохранение объектов/сериализация
В C, если вы хотите сохранить структуру данных, меня научили тому, что сохранение его в текстовом формате в виде строки часто не нужно, а двоичный файл, который существует в качестве моментального снимка памяти, часто лучше, потому что он не " t требуется кодирование/декодирование и сопоставление строк с полями. В C# подход кажется другим, он преобразует поля объекта отдельно в строку или какой-либо другой формат, а затем восстанавливает объект, когда это необходимо. Я не уверен, как работает двоичная сериализация, но я думаю, что это похоже на преобразование данных в какой-то формат и не существует как чистый неформатированный снимок памяти.
Почему метод «моментального снимка памяти» без кодирования/декодирования, не используемого в C#? Единственная причина, по которой я могу думать, это совместимость с другими кодами и средами, и, возможно, это связано со сложностью объектов против обычных структур.
Что делать, если объект имеет сложные свойства, а не только типы значений; то каждая «часть» объекта будет храниться в другой ячейке памяти; также эти объекты могут включать в себя другие объекты. Просто простая догадка, но было бы очень сложно выполнить такую логику для сохранения объектов. – daryal
Одним из значительных сокращений затрат и преимуществ для производительности является абстракция памяти .NET и аппаратное обеспечение в целом. Если вам необходимо сохранить основные требования, пусть структура обрабатывает тяжелую работу (как это часто бывает) и маркирует ваш класс с помощью [Serializable] и использует классы, доступные в System.Runtime.Serialization.Formatters.Binary. – Michael