Довольно странно бояться квадратов, я как первый раз их увидел после установки 8ки, так больше ни разу и не видел. Тут же нет минусов, только плюс: нравятся квадраты — пользуйся, не нравятся — да без проблем, не переключайся на этот экран и все.
Ок, вы правы, я чушь написал. Если считать, что умный редактор всегда сможет понять SomeCollection.Where(c => c.SomeProperty < 10), то такой уж большой проблемы, наверное, нет.
Мне кажется, вы не уловили идею. Ну, например, я хочу написать метод-расширение, который будет перемешивать любую коллекцию. С обобщенными типами это делается в полпинка. Для js же придется придумывать, как генерировать эти методы для разных типов (не вручную же все это писать). Ну и LINQ туда же.
Вот отличное видео, в котором рассказывается, как и для чего делались изменения в MS офисе и какие задачи они решали, уверен, что автор сможет предложить существенно более простое и удобное для пользователя решение.
Отличная критика! Только после нее как-то ожидал увидеть, как автор предлагает гораздо грамотнее решить проблемы, которые решают эти уродливые интерфейсы.
По поводу условной компиляции — winrt/winphone во все поля.
А вообще, да — найти ответы на эти вопросы действительно очень легко. Но тут дело в том, что попытка найти ответ на такие простые вопросы зачастую приводит к новым, уже более глубоким вопросам. Ну, банально — элементарный же вопрос про константы и ридонли поля. Вроде, разница понятна, а что из этого следует? Когда использовать одно, а когда другое? Постепенно углубляемся до обратной совместимости сборок — уже, вроде, и не так банально.
Или вот с упаковкой — автор статьи привел весьма скромное объяснение, но там всплывают и более серьезные вопросы, вроде, а какие, вообще, бывают преобразования типов и чем отличаются?
Короче говоря, не все очевидные вопросы имеют очевидную подоплеку.
Вообще-то… спорно. Я больше доверяю словам Липперта (недавняя статья):
But suppose there is no user-supplied static constructor. Then what happens?
The C# compiler is not bound by the rules of static constructors in this case, and in fact, does not treat your program as though there was an empty static constructor that has static field initializers in it.
А вообще, да — найти ответы на эти вопросы действительно очень легко. Но тут дело в том, что попытка найти ответ на такие простые вопросы зачастую приводит к новым, уже более глубоким вопросам. Ну, банально — элементарный же вопрос про константы и ридонли поля. Вроде, разница понятна, а что из этого следует? Когда использовать одно, а когда другое? Постепенно углубляемся до обратной совместимости сборок — уже, вроде, и не так банально.
Или вот с упаковкой — автор статьи привел весьма скромное объяснение, но там всплывают и более серьезные вопросы, вроде, а какие, вообще, бывают преобразования типов и чем отличаются?
Короче говоря, не все очевидные вопросы имеют очевидную подоплеку.
Напишите класс со статическим полем, но без статического конструктора, и посмотрите рефлектором, во что превратился код.