C# Puzzle 1

Very poorPoorAverageGoodExcellent (8 votes) 

I love to solve C# puzzles; I think it’s a great way to gain a deep understanding of the language. And besides, it’s fun!

I just came up with this one:

static void Test(out int x, out int y)
    x = 42;
    y = 123;
    Console.WriteLine (x == y);

What do you think this code prints? Can you be sure? Post your answer in the comments!

I’ll try to post more puzzles in the future if I can come up with others.


    • Thomas Levesque says:

      Usually, yes… but if that was the end of it, it wouldn’t be much of a puzzle 😉
      Hint: I can make this code print true without modifying the code of the Test method.

  1. Dirk says:

    It can print “true” if called with the same parameter, i.e. “Test(out A, out A)”.

  2. Paul says:

    Good idea, i like puzzles !
    This one was pretty basic.
    Waiting the next ones !

  3. When you pass the same reference (by using “out”), it will print true, otherwise it will print false.

    When x and y refer to the same variable it returns true.

  4. Oro says:

    It appears you can also change value of x in another thread…

  5. Courtesy of Andy, a colleague of mine.

    If you override the Console output, you can get it to print true regardless of what you pass in.

        public class NotBoolTextWriter: TextWriter
            private readonly TextWriter console;
            public NotBoolTextWriter(TextWriter console)
                this.console = console;
            public override void WriteLine(bool value)
            public override Encoding Encoding
                get { return console.Encoding; }
        Console.SetOut(new NotBoolTextWriter(Console.Out));
        // Now call the 'Test' method.

4 Trackbacks

Leave a comment