代码之家  ›  专栏  ›  技术社区  ›  Simsons

如何为嵌套结构中的主/父结构赋值?

  •  0
  • Simsons  · 技术社区  · 14 年前

    嗨,我在C中编写了一个嵌套结构。请在下面查找代码段:

    public struct SMB_MESSAGE
            {
    
                #region SMB Parameter
                public struct SMB_PARAMETERS
                {
                    public byte WordCount;
                    public ushort[] Words;
                }
                #endregion
    
                #region SMB Data
                public struct SMB_DATA
                {
                    public ushort ByteCount;
                    public struct Bytes
                    {
                        public ushort BufferFormat;
                        public byte[] Name;
                    }
                }
                #endregion
    
            }
    

    现在,当我将值赋给内部结构时,如下所示:

    SMB_MESSAGE SMBMESSAGE;
    
    SMB_MESSAGE.SMB_PARAMETERS SMBPARAMETER;
    SMBPARAMETER.WordCount=12;
    SMBPARAMETER.Words=null;
    
    SMB_MESSAGE.SMB_DATA SMBDATA;
    SMBDATA.ByteCount=byteCount;
    
    SMB_MESSAGE.SMB_DATA.Bytes bytes;
    bytes.BufferFormat=bFormat;
    bytes.Name=name;
    

    现在,当我在调试时查看smbmessage的值时,它显示 NameSpace.Form1.SMB_MESSAGE 里面没有价值观。我也找不到一种方法将价值观 SMBMESSAGE .
    如果我们不能赋值,那么为什么我们需要使用嵌套结构呢?

    1 回复  |  直到 14 年前
        1
  •  0
  •   SLaks    14 年前

    您的两个内部结构是嵌套的 类型 ,不是实例成员。
    嵌套类型对父类型的实例没有影响;它们是纯组织概念(除了可以访问父类型的私有成员之外)

    因此,你 SMB_MESSAGE 结构实际上没有任何实例成员。

    需要生成四个普通结构,然后在 SMBI消息 持有其他两个结构。

    例如:

    public struct SMB_MESSAGE {
        public SMB_PARAMETERS Parameters;
        public SMB_DATA Data;
    
    }
    public struct SMB_PARAMETERS
    {
        public byte WordCount;
        public ushort[] Words;
    }
    
    public struct SMB_DATA
    {
        public ushort ByteCount;
        public Bytes Bytes;
    }
    public struct Bytes
    {
        public ushort BufferFormat;
        public byte[] Name;
    }