你是需要序列化吗?如果是,可以参考:
ms-help://MS.VSCC/MS.MSDNVS.2052/cpguide/html/cpovrserializingobjects.htm

解决方案 »

  1.   

    用Convert.ToByte参考
    ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfsystemconvertclasstobytetopic.htm
      

  2.   

    class Test
    {
       int id;
       string name;
       char[] chars = "abcd".ToCharArray();
    }
    声明为可序列化:[Serializable]
    class Test
    {
       int id;
       string name;
       char[] chars = "abcd".ToCharArray();
    }然后在转换的地方:
    MemoryStream stream = new MemoryStream();
    IFormatter formatter = new BinaryFormatter();
    Test t = new Test();
    formatter.Serialize( stream,t );
    stream.Flush();byte[] theBytes = stream.ToArray();stream.Close();
    //theBytes 就是序列化后的字节数组反序列化:IFormatter formatter = new BinaryFormatter();
    MemoryStream stream = new MemoryStream( theBytes ); //theBytes是序列化后的结果
    Test t = (Test) formatter.Deserialize(fromStream);
    stream.Close();//t 就是反序列化后的对象另外,使用上面这些类,需要引用:
    using System.IO;
    using System.Runtime.Serialization;
    using System.Runtime.Serialization.Formatters.Binary;
      

  3.   

    另外提一句,如果你要转成字节流并起能够转换回来,只能使用序列化的方法使用Covert.ToBytes的方法是达不到效果的直接转也是不可能的
      

  4.   

    我不是想序列化这个对象,并且也不需要能够转回来,我想直接获得对象的字节流。
    还有,.net并不提供Convert.ToBytes,Convert.ToByte更不可能是我所需要的了。
      

  5.   

    如果是进行网络传输
    哪就用字节流方式的序列化方法好了参考
    ms-help://MS.VSCC/MS.MSDNVS.2052/cpguide/html/cpconbinaryserialization.htm
      

  6.   

    timmy3310(tim)说的是对的对象只有序列化输出才可以当然如果你不序列化,那么这个对象没有意义因为它无法保存对象结构,那么读取的时候就不是对象而是普通的字节流.
      

  7.   

    你看看这个类的方法吧//声明
    private ASCIIEncoding  m_ascn ;
    //使用
    m_ascn.GetChars(chars);
      

  8.   

    详见
    ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfSystemTextASCIIEncodingMembersTopic.htm
      

  9.   

    如果你担心其他语言不能支持的话
    就是用XML序列化的方式吧
    不管怎么样
    都可以当作一个xml格式的文档来解析嘛
      

  10.   

    但是如果采用序列化的方法,那么别的开发语言能够识别么?毕竟,序列化后的字节流包含了太多可能和C#语言特性有关的内容。你的想法不无道理
    实际上如果这样的话,你可以选择:
    1、使用XML序列化的方法,在其他开发语言中来解读这个XML文件。
    2、实际上你只是想传输数据,那么你应该以数据的保存为中心,可以定义自己的格式来保存数据。另外,如果你使用二进制序列化,只要是在.Net下是绝对可以反序列化的
      

  11.   

    对象好像不能直接转成Byte[]等连续的东东,因为它的存储并不是连续的,而且还有深度问题。所以你所说的无法实现,就连object的size也是无法得到的(不信你可以用System.Runtime.InteropServices.Marshal.SizeOf一个object试试,应该报错!)。像int、struct这样的连续存储的对象倒是可以实现的。
    你的想法和序列化是两个概念!
      

  12.   

    对于题目中的class要在前面加一个布局属性,并且char数组必须是固定的(也可以用StringBuilder)
    [StructLayout(LayoutKind.Sequential)]
    public struct Test
    {
       int id;
       string name;
       char[4] chars = "abcd".ToCharArray();
    }
    如果这是API的参数,直接用就可以了不用copy到Byte数组。API中用的都是指针(也就是你的struct开头的地址)