C#--得到对象在内存中的大小和把内存中的字节转换为字符串

一、得到类实例在内存中的大小。

1、首先对象要标记可系列化,再进行二进制序列化,相关代码

1
2
3
4
5
6
7
8
9
10
11
12
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+ 中已被弃用

1
2
3
4
5
6
7
8
9
10
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);
            }
        }

  

posted @   寻天崖子  阅读(30)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示