What's the strangest corner case you've seen in C# or .NET?
        Posted  
        
            by Jon Skeet
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Jon Skeet
        
        
        
        Published on 2008-10-11T19:30:45Z
        Indexed on 
            2010/03/21
            2:11 UTC
        
        
        Read the original article
        Hit count: 553
        
I collect a few corner cases and brain teasers and would always like to hear more. The page only really covers C# language bits and bobs, but I also find core .NET things interesting too. For example, here's one which isn't on the page, but which I find incredible:
string x = new string(new char[0]);
string y = new string(new char[0]);
Console.WriteLine(object.ReferenceEquals(x, y));
I'd expect that to print False - after all, "new" (with a reference type) always creates a new object, doesn't it? The specs for both C# and the CLI indicate that it should. Well, not in this particular case. It prints True, and has done on every version of the framework I've tested it with. (I haven't tried it on Mono, admittedly...)
Just to be clear, this is only an example of the kind of thing I'm looking for - I wasn't particularly looking for discussion/explanation of this oddity. (It's not the same as normal string interning; in particular, string interning doesn't normally happen when a constructor is called.) I was really asking for similar odd behaviour.
Any other gems lurking out there?
© Stack Overflow or respective owner