В C # 5.0 эта проблема исправлена, и вы можете закрыть циклические переменные и получить ожидаемые результаты.
Спецификация языка гласит:
8.8.4 Оператор foreach
(...)
Оператор foreach в форме
foreach (V v in x) embedded-statement
затем расширяется до:
{ E e = ((C)(x)).GetEnumerator(); try { while (e.MoveNext()) { V v = (V)(T)e.Current; embedded-statement } } finally { … // Dispose e } }
(...)
Размещение
v
внутри цикла while важно для того, как оно захватывается любым анонимным функция, встречающаяся во встроенном операторе. Например:int[] values = { 7, 9, 13 }; Action f = null; foreach (var value in values) { if (f == null) f = () => Console.WriteLine("First value: " + value); } f();
Если бы
v
было объявлено вне цикла while, оно было бы общим для всех итераций, и его значение после цикла for было бы конечным значением,13
, которое это то, что напечатал бы вызовf
. Вместо этого, поскольку каждая итерация имеет свою собственную переменнуюv
, переменная, захваченнаяf
на первой итерации, будет продолжать содержать значение7
, которое и будет напечатано. ( Примечание: более ранние версии C # объявленыv
вне цикла while. )
Zend Framework представляет собой один из лучших существующих PHP-кодов.
log4net довольно хорош. Очень легко настроить БД, файловую систему и журнал событий. Конфигурация позволяет быстро изменять поведение при развертывании.
Фреймворк CSLA ( http://lhotka.net/ ) действительно хорош, мы использовали его пару лет, прежде чем создать свой собственный.
Использование jQuery изменил способ создания вещей, особенно за счет создания легких компонентов, которые заменяют некоторые стандартные отраслевые компоненты, которые мы приобрели в прошлом.
MooTools делает некоторые из наиболее удобных в обслуживании (и самых простых в написании) приложений JavaScript, которые вы можете получить.
Вот мои любимые :
Использование
в качестве фреймворка
и отредактировал с помощью
и управлял проектом с помощью Trac .
Если вы работаете на Mac, как только вы вы внесли изменения в код, проверьте их с помощью:
svn diff | mate
, и вы сможете просмотреть свои изменения, выделив их красивым цветом.
В сочетании с ASP.NET, C #, Kentico CMS является относительно новой структурой для создание веб-приложений. В нем есть пара вещей:
Есть что сказать о гибкой структуре, соответствующей стандартам и в то же время дающей возможность всем, включая разработчиков, своевременно развертывать функции, необходимые для проекта.
jQuery - мой лучший помощник на милю страны. Это экономит часы и часы царапины в голове и кроссбраузерных взлетов. Одна из лучших вещей для меня (а их много) - это то, как селекторы так хорошо сочетаются с селекторами CSS, с которыми я очень хорошо знаком. Это делает манипуляции с DOM абсолютным удовольствием, а Ajax - легким ветерком. Спасибо, Джон Ресиг, снизу моего Mac Pro спасибо, чувак, ты гений!
ExtJS за его общие возможности по UI, манипуляции с DOM, простоту реализации Ajax и многие другие вещи.
Также их форум поддержки - один из лучших.
И нет, я не работаю на них, но они мне нравятся.
Считается ли Smarty ? Это отличная платформа, и она хорошо задокументирована.
Flex 2+
Причины:
public static int Main ()
соглашение) MXML
- это гениально. Flex 4 принесет больше согласованности, подобной XML, но потеряет некоторую скорость разработки (например, mx: Component
больше не находится в пространстве имен mx:
). Это в отличие от XAML, который уже является XML-согласованным, но при этом очень подробным (или классы фреймворка требуют такой многословности?)) python twisted
). Обратной стороной является то, что это не полный стек, а просто уровень представления. Вам все еще нужен сервер C # / Java / PHP. И он остался проприетарным ( ECMAScript 4
так и не прошел).
Какой существующий фреймворк действительно вдохновил вас на отличную работу?
Ну, я пытаюсь написать что-нибудь подобное для Gtk +.
На самом деле они никогда не были нужны, поскольку весь ввод-вывод является асинхронным (случайно, это то же самое, что python twisted
).
Обратной стороной является то, что это не полный стек, а просто уровень представления. Вам все еще нужен сервер C # / Java / PHP. И он остался проприетарным ( ECMAScript 4
так и не прошел).
Какой существующий фреймворк действительно вдохновил вас на отличную работу?
Ну, я пытаюсь написать что-нибудь подобное для Gtk +.
На самом деле они никогда не были нужны, поскольку весь ввод-вывод является асинхронным (случайно, это то же самое, что python twisted
).
Обратной стороной является то, что это не полный стек, а просто уровень представления. Вам все еще нужен сервер C # / Java / PHP. И он остался проприетарным ( ECMAScript 4
так и не прошел).
Какой существующий фреймворк действительно вдохновил вас на отличную работу?
Ну, я пытаюсь написать что-нибудь подобное для Gtk +.
Но вы всегда можете сделать свой собственный. Обратной стороной является то, что это не полный стек, а просто уровень представления. Вам все еще нужен сервер C # / Java / PHP. И он остался проприетарным ( ECMAScript 4
так и не прошел).
Какой существующий фреймворк действительно вдохновил вас на отличную работу?
Ну, я пытаюсь написать что-нибудь подобное для Gtk +.
Но вы всегда можете сделать свой собственный. Обратной стороной является то, что это не полный стек, а просто уровень представления. Вам все еще нужен сервер C # / Java / PHP. И он остался проприетарным ( ECMAScript 4
так и не прошел).
Какой существующий фреймворк действительно вдохновил вас на отличную работу?
Ну, я пытаюсь написать что-нибудь подобное для Gtk +.
Для меня это Обработка .
Я был полностью поражен этой структурой, которая позволяет непрограммистам изучать основы программирования с помощью простых, но мощных API-интерфейсов, например а также позволяя опытным программистам создавать прекрасные визуализации с вещами, которые до этого момента они видели только как кучу байтов.
Визуализации, которые вы можете быстро увидеть своими глазами, - отличный способ познакомиться с концепциями.
Кроме того, люди делать блестящие вещи с обработкой :)
Мне очень нравится Java API. Документация является исключительной.
Я большой поклонник фреймворка Cocoa для Mac OS X и, конечно же, Ruby on Rails.
Cocoa прост в использовании, поддерживает MVC из коробки и абстрагирует Mac OS X, сохраняя при этом «близость» к операционной системе.
Rails - это, в общем, Rails. Он делает то, что Rails делает лучше всего.
Я бы сказал Какао. Оказывается, это достаточно богатый API, но без неприглядности Java.
Python, руки вниз. Батарейки в комплекте + PyQt для графического интерфейса.
Ruby on Rails (удивительно, что еще не упомянули). Он показывает, как условные обозначения упрощают программирование. Особенно полезной идеей является миграция базы данных вверх и вниз.
Qt4 ... Это действительно отличная среда графического интерфейса C ++:
Первый и единственный веб-фреймворк (до сих пор), который действительно заставил меня искать идеи для создания веб-сайтов, чтобы я мог практиковать свои навыки.
jQuery изменил мой взгляд на программирование для Интернета.
С точки зрения того, какой фреймворк позволил мне обеспечить наибольшую ценность для клиентов за час разработчика, я бы сказал, что C # /. Net, за которым следуют jQuery и ASP.Net MVC.
Тот факт, что я могу (в основном) забыть о проблемах совместимости с браузерами, на мой взгляд, является убийственной особенностью jQuery. Моя команда недавно смогла создать сложное и чрезвычайно загруженное AJAX приложение с использованием jQuery и ASP.Net MVC за считанные недели. Я не могу представить, что смогу сделать так много и так быстро без этих фреймворков.
Я обычно использую методы расширения, когда мне нужно рассматривать объект, предшествующий LINQ, как объект, готовый к LINQ. Например, вы хотите запросить DataRowCollection (свойство DataTable.Rows), которое вы, вероятно, не используете ни для чего, кроме списка DataRows. Я бы сделал метод расширения, который выполняет это преобразование за вас (DataRowCollection в List
). Я также обычно использую метод расширения для безопасного получения значений, когда мне не нужно генерировать исключение, если по какой-либо причине для столбца указано недопустимое имя ключа. Затем вы можете создать метод расширения, который принимает список целых чисел в качестве идентификаторов и имя поля, содержащее идентификатор для возврата того, что вы хотите. Когда все сказано и сделано, это делается с помощью одной строчки кода. Вот класс со всеми вашими методами расширения.
CakePHP конечно. Особенно после версии 1.2, то, как вынуждает кодировать правильный MVC и ООП до некоторой степени, замечательно и очень приятно. Я не буду программировать, если бы не CakePHP.
Лучшая открытая платформа API, которую я использовал, - ViaMichelin, определенно Ferrari среди всех решений и отличных карт. Они снимают блоки с других поставщиков ГИС, и Google находится почти на самом низком уровне качества, поскольку карты Google - это всего лишь базовая услуга.