3

I have 2 structs in C language:

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

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

and C++ code:

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

I'm trying to convert they to 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; }
    }
}

But I don't know how to convert line:

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

to C#?

How can I convert this line to C#?

9
  • 1
    Careful with the char in C to char in C# conversion. They can have a different meaning. char in C# really means a unicode character. And what exactly is m_Down? Commented May 25, 2013 at 15:23
  • 1
    m_Down->m_Blocks[0][1] == *m_Down looks strange for me, except there's an overloaded operator. Commented May 25, 2013 at 17:01
  • 1
    What is the logic behind this code? Commented May 25, 2013 at 17:10
  • 1
    You have a type error there, I think. m_Down->m_Blocks[0][1] is of type char, while *m_Down is of type CSide Commented May 25, 2013 at 18:25
  • 2
    @KenKin yeah, just guessing the overload might be to compare the m_side field...? We need more info. Commented May 25, 2013 at 19:00

1 Answer 1

1

this line make no sense, i guess it's always evaluate to false.

What you can do is to set a breakpoint on that line and perform a quick watch, evaluate *m_Down to make sure there's no overload operator.

Then, evaluate the condition. Depending on your type of project, put some printf("inside the if")/printf("inside the else"), messagebox or write it in a file. If the condition is evaluate to true, print the value of m_Down->m_BLocks[0][1] and *m_Down...

Make sure you first understand the logic behind this line. Once you understand it, it will be easy to write it in c#

PS: in C#, use Byte instead of Char

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.