将C ++结构转换为C#

时间:2013-10-28 16:16:19

标签: c# c++ structure

我在C ++中有一个结构定义如下:

struct check1
{
  check1(USHORT vaultLen)
  {
    size = sizeof(*this->vaultLen) + vaultLen + sizeof(*this->digestKey);
    buffer = new UCHAR[size];

    this->vaultLen = (USHORT*)buffer;
    this->vaultData = buffer + sizeof(vaultLen);
    this->digestKey = (UCHAR(*)[8])(buffer + sizeof(vaultLen) + vaultLen);

    *(this->vaultLen) = vaultLen;
  }


  USHORT *vaultLen;
  UCHAR *vaultData;
  UCHAR (*digestKey)[8];

  UCHAR* buffer;
  USHORT size;
}

我不希望使用不安全的代码,因此不允许使用指针。 C#中的等价结构是什么?定义为指针的成员实际占用空间吗?

关于如何使用此结构,将创建此结构的对象,并将其size成员传递给int。

1 个答案:

答案 0 :(得分:1)

不用于互操作的等效C#结构看起来像:

public class check1
{
    public byte[] digestKey = new byte[8];
    public List<byte> vaultData;
}

其他成员不是必需的,因为buffer只是一个容纳digestKeyvaultData的内存块,而其他成员是大小缓冲区,以便快速访问其中的正确位置各种数据成员的缓冲区。