我在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#中的等效结构是什么?定义为指针的成员是否实际占用空间?
关于如何使用此结构,将创建此结构的对象并将其大小成员传递给int。
最佳答案
不用于互操作的等效C#结构如下所示:
public class check1
{
public byte[] digestKey = new byte[8];
public List<byte> vaultData;
}
其他成员不是必需的,因为
buffer
只是存储digestKey
和vaultData
的内存块,其他成员是大小缓冲区,可以快速访问各种数据成员在缓冲区中的正确位置。关于c# - 将C++结构转换为C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19639877/