Что хранит в себе объект?

Рейтинг: 3Ответов: 1Опубликовано: 27.02.2023

Вывод на консоль - 41, это размер объекта o в байтах. Откуда 40 байт и на что они потратились?

object o = new object();
using (Stream s = new MemoryStream())
{
    BinaryFormatter formatter = new BinaryFormatter();
    formatter.Serialize(s, o);
    Console.WriteLine(s.Length);
}

Ответы

▲ 5
using System.Runtime.Serialization.Formatters.Binary;

object o = new object();
using (var s = new MemoryStream())
{
    BinaryFormatter formatter = new BinaryFormatter();
    formatter.Serialize(s, o);
    Console.WriteLine(s.Length);

    Console.WriteLine(string.Concat(s.ToArray().Select(x => (char)x)));
}

Вывод:

System.Object♂

То есть там записан сперва тип данных, а потом значение этого типа.