我正在尝试理解托管/非托管代码,因为它与结构和类有关。我有一个带有另一个结构属性的结构,但它是一个指针声明,如下所示:
struct StateInfo
{
Bitboard board;
StateInfo* previous;
}我正在将一个C++项目转换为C#。不管怎么说,这是行不通的,因为Bitboard是一个类。我得到的错误是因为指针不能在托管类型上声明。如果我从struct中取出Bitboard,那就没问题了。我需要它,所以我把Bitboard从一个类变成了一个结构,一切都很好。我不确定是怎么回事?有什么想法吗?
发布于 2011-05-23 11:59:14
你可能根本不想要一个struct。而是:
class StateInfo
{
Bitboard board;
StateInfo previous;
}在C#中,struct是一种值类型。例如,int就是一个struct。它们通常应该用于完全由它们的价值描述的东西。
发布于 2011-05-23 11:59:21
本质上,在c#中,所有对象都自动是一个指针,不需要释放。
尝试阅读一些关于从C++迁移到C# C++ -> C#: What You Need to Know to Move from C++ to C#的过渡文章
发布于 2011-05-23 12:02:37
我建议你读一读关于blittability的文章。
Blittable类型在托管代码和非托管代码中具有相同的二进制表示形式,如果希望指针有意义,则需要以相同的方式表示它们。
https://stackoverflow.com/questions/6092665
复制相似问题