C#如何序列化?怎么序列了为空? StringCollection


        private byte[] SerializeOnlineList()
        {
            StringCollection onlineList = new StringCollection();
            foreach (object o in _hb_OnlineList.Keys)
            {
                onlineList.Add(o.ToString());//转换语句
            }
            IFormatter format = new BinaryFormatter();//以二进制格式将对象或整个连接对            //象图形序列化和反序列化。
            MemoryStream stream = new MemoryStream();
            format.Serialize(stream, onlineList);//保持到内存流
            byte[] ret = stream.ToArray();
            stream.Close();
            return ret;
        }
返回的ret怎么为空??注:_hb_OnlineList.Keys是有值的(Key:"123456",此处用不到Value)。
我的平台是08 .net3.5应该跟这个没关系吧?再问下,如何反序列化后将值放入ListBox?
解决方案 »
  1. cvm
  2. 代码没有问题。经过测试运行正常。    IFormatter format = new BinaryFormatter(); 
                MemoryStream stream = new MemoryStream(ret);
               StringCollection onlineList=  format.Deserialize(stream) as StringCollection;
                stream.Close();
                listBox1.DataSource = onlineList;
      

  3. 这位大哥,我这调试ret返回的是Null???怎么回事?
      

  4. 请各位设个断点看一下,retrun ret;的ret值是多少?我的是08 .net2.0,调试后ret的值为:
    ret = {byte[299]}
    [0] 0 byte
    [1] 1 byte
    [2] 0 byte
    [3] 0 byte
    [4] 0 byte
    [5] 255 byte
    ....................
    [296] 13 byte
    [297] 3 byte
    [298] 11 byte
    怎么回事?
      


  5. byte[] btyes =图片;
                if (btyes != null &&
                    btyes.Length > 0)
                {
                    MemoryStream ms = new MemoryStream(btyes);
                    Image img = Image.FromStream(ms);
                    b.BookImage = img;
                }
                else
                    b.BookImage = null
    图片
      


  6. byte[] btyes =图片;
                if (btyes != null &&
                    btyes.Length > 0)
                {
                    MemoryStream ms = new MemoryStream(btyes);
                    Image img = Image.FromStream(ms);
                    b.BookImage = img;
                }
                else
                    图片 = null
      

  7. 这个字节数组都有值啊,即使onlineList集合为空,序列化后的ret也不可能为空的。
    你确认在return ret;这句断点调试时为null吗?
      

  8. public byte[] ConvertImage(Image image) 

        FileStream fs=new FileStream("imagetemp",FileMode.Create,FileAccess.Write,FileShare.None); 
        BinaryFormatter bf = new BinaryFormatter(); 
        bf.Serialize(fs,(object)image); 
        fs.Close(); 
        fs=new FileStream("imagetemp",FileMode.Open,FileAccess.Read,FileShare.None); 
        byte[] bytes = new byte[fs.Length]; 
        fs.Read(bytes,0,(int)fs.Length); 
        fs.Close(); 
        return bytes; 

    public Image ReadImage(byte[] bytes) 

      FileStream fs=new FileStream("imagetemp1",FileMode.Create,FileAccess.Write,FileShare.None); 
      foreach(byte a in bytes) 
      { 
        fs.WriteByte(a); 
      } 
        fs.Close(); 
        fs=new FileStream("imagetemp1",FileMode.Open,FileAccess.Read,FileShare.None); 
        BinaryFormatter bf = new BinaryFormatter(); 
        object obj=bf.Deserialize(fs);  
      fs.Close(); 
      return (Image)obj; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值