C#--得到物件在記憶體中的大小和把記憶體中的位元組轉換為字串

寻天崖子發表於2024-12-02

一、得到類例項在記憶體中的大小。

1、首先物件要標記可系列化,再進行二進位制序列化,相關程式碼

     public static long GetSize(object obj)
        {
            if (obj == null)
                return 0;

            using (var stream = new MemoryStream())
            {
                var formatter = new BinaryFormatter();
                formatter.Serialize(stream, obj);
                return stream.Length;
            }
        }

2、示例說明,一個簡單的沒有資料的物件就有520個位元組

二、把二進位制序列化轉為字串

備註:BinaryFormatter 在 .NET Core 和 .NET 5+ 中已被棄用

public static string ConvertToSerializedString(object obj)
        {
            BinaryFormatter formatter = new BinaryFormatter();
            using (MemoryStream ms = new MemoryStream())
            {
                formatter.Serialize(ms, obj);
                byte[] bytes = ms.ToArray();
                return Encoding.UTF8.GetString(bytes);
            }
        }

  

相關文章