如何将值分配给嵌套结构中的主/父结构?

时间:2010-08-06 05:27:02

标签: c# .net struct structure

您好我在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

        }

现在,我将Value分配给Inner结构,如下所示:

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 个答案:

答案 0 :(得分:0)

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

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

你需要制作四个普通结构,然后在SMB_MESSAGE中生成另外两个结构的两个属性。

例如:

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;
}