Сообщения

Сообщения за июнь, 2010

.NET Framework: Слабо документированная фича инициализаторов C#, граничущая с приличиями.

Решарпер наткнул меня на следующий интересный случай. Я порылся и ничего не нашел в MSDN. Это относиться к .NET Framework 3.0 и длалее.   Оказывается запись var classLevelOne = new ClassLevelOne {     PropClassLevelTwoInOne =     {         ClassLevelThreeInTwo = new ClassLevelThree ()      } }; Не тоже самое, что запись var classLevelOne = new ClassLevelOne {     PropClassLevelTwoInOne =  new PropClassLevelTwo     {         ClassLevelThreeInTwo = new ClassLevelThree ()      } };   Первая запись говорит о том, что нужно не задать, а взять из свойства (PropClassLevelTwoInOne ) уже заданный там ранее объект и задать члены этого объекта. Как я понимаю, объект в этом свойстве нужно задать ранее в конструкторе или в этом же "скобочном" инициализаторе.   Я был немного шокирован, но дебаггинг не дал соврать, потому что выпадает исключение, если свойтсво PropClassLevelTwoInOne ссылается на null.   А ответ удалось найти в спецификации языка C# . Т.е. такая конструкция говорит о т

WPF: Баг проекта WPF в Visual Studio при работе с ресурсными файлами.

Речь о проекте WPF в Visual Studio.   Есть файлы которые компилируются в сборку. Ресурсные файлы. У них в свойствах в Build Action стоит Resource. С ними нужно быть осторожным, т.к. при удалении такого файла из проекта или при изменении Build Action на None ничего не меняется. Грубо говоря этот файл останется у вас в ресурсе. Возможно если вы подмените этот файл, то новый файл не подхватиться (не пробовал).   Для решения этой проблемы, после каждого изменения с ресурсными файлами, выполните очистку проекта или всего солюшена - Clean из контекстного меню в Solution Explorer. Только тогда все подхвытывается корректно, иначе вы можете получить исключение при обращении к ресурсу или ненужное утяжеление проекта ресурсными файлами, которые более не нужны.   Видел это в VS 2008, в 2010 не пробовал. Я думаю это относится не только к проектам WPF.