C# Puzzle 1

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.

16 thoughts on “C# Puzzle 1”

    1. 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. 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)
            {
                console.WriteLine(!value);
            }
    
            public override Encoding Encoding
            {
                get { return console.Encoding; }
            }
        }
    
        Console.SetOut(new NotBoolTextWriter(Console.Out));
    
        // Now call the 'Test' method.
    
    1. It will not always print true, though… it will just print the negation of the original condition.

Leave a Reply

Your email address will not be published. Required fields are marked *