Anonymous type equality
Let’s say you instantiate two variables (a and b) using anonymous types. They both have the same two properties (x and y) with equal values. var a = new { x = 1, y = 2 }; var b = new { y = 2, x = 1 }; Do you think they are equal? Console.WriteLine(a.Equals(b)); //Prints false :O They are not. Not something I expected! If we look at the IL the C# compiler produced, it starts making sense though. ...