2010-08-06 3 views
0

안녕하세요 저는 C#에서 중첩 구조를 작성했습니다. 내가 SMBMESSAGE의 값으로 볼 때 더 NameSpace.Form1.SMB_MESSAGE 및 표시 디버깅하는 동안 이제중첩 구조의 주/상위 구조에 값을 할당하는 방법은 무엇입니까?

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; 

: 나는 아래와 같은 이너 구조에 값을 할당하는 동안 이제

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 

     } 

: 아래의 코드 찾기 내부 값. 또한 값을 SMBMESSAGE으로 지정하는 방법을 볼 수 없습니다.
값을 할당 할 수없는 경우 중첩 구조를 사용해야하는 이유는 무엇입니까?

+0

귀하의'struct' 이름은 끔찍하다. – SLaks

+0

@SLaks, 이유를 알고 싶습니다. – Simsons

+2

C#에서는 모든 대문자를 사용하지 말아야합니다. 대신에'Message','MessageParameter','MessageData','DataBytes'와 같은 이름을 붙여야합니다. – SLaks

답변

0

두 내부 구조체는 인스턴스 멤버가 아닌 유형 중첩되어 있습니다.
중첩 된 형식은 부모 형식의 인스턴스에는 영향을주지 않습니다. 그들은 순수한 조직 개념입니다 (부모 유형의 개인 회원에 액세스 할 수 있다는 것을 제외하고).

그러므로 struct 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; 
} 
+0

그걸로 궁금해 다음 왜 하나 중첩 된 구조를 사용합니다. 어떤 용도로 사용할 수 있습니까? – Simsons

+0

왜 이것을 다운 그레이드 했습니까? – SLaks

+0

@Subhen : http://msdn.microsoft.com/en-us/library/ms229027%28v=VS.100%29.aspx – SLaks

관련 문제