Я собираю несколько угловых случаев и мозговые тизеры и всегда хотел бы услышать больше. Страница только на самом деле охватывает биты языка С# и бобы, но я также нахожу основные .NET-вещи интересными. Например, здесь, который отсутствует на странице, но который я считаю невероятным:
string x = new string(new char[0]);
string y = new string(new char[0]);
Console.WriteLine(object.ReferenceEquals(x, y));
Я ожидал бы, что напечатать False - в конце концов, "новый" (со ссылочным типом) всегда создает новый объект, не так ли? Спецификации для С# и CLI указывают на то, что это должно быть. Ну, не в этом конкретном случае. Он печатает True и делает на каждой версии рамки, с которой я ее тестировал. (Я не пробовал это на Моно, правда...)
Чтобы быть ясным, это всего лишь пример того, что я ищу - я не особо искал обсуждения/объяснения этой странности. (Это не то же самое, что и обычная интерполяция строк, в частности, интернирование строк обычно не происходит при вызове конструктора.) Я действительно просил о подобном нечетном поведении.
Любые другие драгоценные камни скрываются там?