2013-05-25 4 views
3

J'ai 2 struct en langage C:Conversion C++ struct pointeur vers C#

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

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

et le code 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 
} 

Je suis en train de convertir ils en 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; } 
    } 
} 

Mais je ne sais pas comment convertir la ligne:

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

à C#? Comment convertir cette ligne en C#?

+1

Attention au 'char' en C' char' dans la conversion C#. Ils peuvent avoir une signification différente. 'char' en C# signifie vraiment un caractère Unicode. Et qu'est-ce que "m_Down" exactement? – Dirk

+0

Il me manque, m_Down est CSide. – hoangkianh

+1

'm_Down-> m_Blocks [0] [1] == * m_Down' semble étrange pour moi, sauf qu'il y a un opérateur surchargé. –

Répondre

1

cette ligne n'a aucun sens, je suppose que c'est toujours évaluer à faux. Ce que vous pouvez faire est de définir un point d'arrêt sur cette ligne et d'effectuer une surveillance rapide, évaluez * m_Down pour vous assurer qu'il n'y a pas d'opérateur de surcharge.

Ensuite, évaluez la condition. En fonction de votre type de projet, mettez printf ("inside the if")/printf ("à l'intérieur de l'autre"), messagebox ou écrivez-le dans un fichier. Si la condition est évaluée à true, imprimez la valeur de m_Down-> m_BLocks [0] [1] et * m_Down ...

Assurez-vous d'abord comprendre la logique derrière cette ligne. Une fois que vous le comprenez, il sera facile de l'écrire en C#

PS: en C#, l'utilisation Byte au lieu de Char