C# Puzzle 1

Very poorPoorAverageGoodExcellent (8 votes) 
Loading...

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.

12 Comments

    • 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)
            {
                console.WriteLine(!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

css.php