将C ++指针结构转换为C#

时间:2013-05-25 15:05:36

标签: c# c pointers

我有两种C语言结构:

struct CSquare
{
    char Side;
    int  Row;
    int  Col;    
};

struct CSide
{
   char     m_Side;           
   char     m_Blocks[3][3];     
   CSquare  *m_Moves;
};

和C ++代码:

int Count = 0;
int Flag = 0;
if (m_Down->m_Blocks[0][1] == *m_Down)
{
    Count++;
    Flag |= 2;
    // type of m_Down is CSide
}

我正在尝试将它们转换为C#:

public class Square
{
    public char Side { get; set; }
    public int Row { get; set; }   
    public int Col { get; set; }
}

public class CubeSide
{
    private char Side { get; set; }
    private char[,] _block = new char[3, 3];
    private Square[] moves;

    public char[,] Block
    {
        get { return _block; }
        set { _block = value; }
    }

    internal Square[] Moves
    {
        get { return moves; }
        set { moves = value; }
    }
}

但我不知道如何转换行:

if (m_Down->m_Blocks[0][1] == *m_Down)

到C#?

如何将此行转换为C#?

1 个答案:

答案 0 :(得分:1)

这条线毫无意义,我猜它总是评价为假。

您可以做的是在该行上设置断点并执行快速监视,评估* m_Down以确保没有重载运算符。

然后,评估条件。根据您的项目类型,将一些printf(“在if中”)/ printf(“在else中”),messagebox或将其写入文件中。如果条件评估为true,则打印m_Down-> m_BLocks [0] [1]和* m_Down ...

的值

确保您首先了解此行背后的逻辑。一旦理解了它,就可以很容易地用c#

编写它

PS:在C#中,使用Byte而不是Char