我有 2 个 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#?
最佳答案
这一行没有意义,我猜它总是求值为 false。
您可以做的是在该行上设置一个断点并执行快速观察,评估 *m_Down 以确保没有重载运算符。
然后,评估条件。根据您的项目类型,放一些 printf("inside the if")/printf("inside the else")、messagebox 或将其写入文件。如果条件评估为真,则打印 m_Down->m_BLocks[0][1] 和 *m_Down 的值...
请确保您首先了解此行背后的逻辑。一旦理解了,用c#写起来就很容易了
PS: 在 C# 中,使用 Byte 而不是 Char
关于c# - 将 C++ 指针结构转换为 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16750844/