Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Динамично не добавляйте средства управления после страницы init событие, поскольку это завинтит дерево состояния отображения.
(VB.NET) при отправке Объекта через Свойство, Получает средство доступа в функцию с ключевым словом ByRef, это на самом деле попытается обновить объект с помощью средства доступа Набора для Свойства.
Исключая:
UpdateName(ByRef aName as String)
UpdateName(Employee.Name)
попытается обновить имя при помощи Набора на свойстве Name Сотрудника.
Весь код я должен поддержать, что все еще похож на него, был написан в vb6, показав полное незнание более новых стилей.
я говорю вещи как CreateObject (), чрезмерный < % %> блоки, И/или вместо AndAlso/OrElse, Len () вместо.Length (), s/o венгерские бородавки префикса, Тусклый MyVariable без типа, функционирует без типа возврата... Я мог продолжить.
Вы не можете сослаться ни на что вообще выше корневой папки приложения.
При использовании gridview без управления источником данных (т.е. привязке набора данных прямо с управлением) необходимо вручную реализовать события сортировки и подкачки страниц как показано здесь:
http://ryanolshan.com/technology/gridview-without-datasourcecontrol-datasource/
Сегодня я просто изучил это: Связывание () метод, как используется с GridViews и ListViews, не существует. Это на самом деле скрывает некоторое волшебство Отражателя, которое превращает его в Оценку () и некоторое переменное присвоение.
результат этого то, что вызовы как:
<%# FormatNameHelper(Bind("Name")) %>
, что совершенно допустимый взгляд перестанет работать. См. это сообщение в блоге для получения дополнительной информации.
Не редактируйте свой web.config с блокнотом, если у Вас будут символы с диакритикой, то он заменит его одним с неправильным кодированием. Это будет выглядеть одинаково все же. Просто Ваше приложение не будет работать.
Необходимость перейти через обручи для получения.ClientID свойства в JavaScript.
было бы хорошо, если бы фаза рендеринга жизненного цикла создала сценарий, которые настраивают var для каждого управления сервером с тем же именем как управление, которое было автоматически инициализировано к значению clientID. Или, возможно, имейте некоторый способ легко инициировать это действие.
Хм... Я держал пари, что мог настроить метод для этого самостоятельно через отражение.
Page_Load выполняется перед обработчиками управления. Таким образом, Вы не можете внести изменения в обработчике событий и затем использовать те изменения в загрузке страницы. Это становится проблемой, когда у Вас есть средства управления на основной странице (такие как управление входом в систему). Можно обойти проблему путем перенаправления, но это - определенно глюк.
Жизненный цикл пользовательских элементов управления не совпадает отлично с событиями жизненного цикла страницы того же имени.
Пользовательские элементы управления только поддерживаются разработчиком при создании управления или при создании страницы, которая использует управление, но не обоих.
Целая вещь жизненного цикла в целом.
Не то, чтобы я вижу что-то не так с ним, это просто, что Вы были бы поражены числом людей, которые начинают работать над большими проектами ASP.NET прежде понимание его, а не наоборот. Следовательно, это становится глюком.
Примечание, которое я сказал большой проекты: Я думаю, что лучший способ достигнуть соглашения с жизненным циклом состоит в том, чтобы работать над несколькими меньшими проектами самостоятельно сначала, где не имеет значения так при завинчивании их.
Состояние отображения ... при использовании его..., может выйти из-под контроля, если Вы не уделение внимания ему.
Если вы запускаете классические приложения ASP в том же виртуальном каталоге, что и приложение ASP.Net, первое попадание в приложение должно быть на странице ASP.Net. Это гарантирует, что AppPool будет построен с правильными конфигурациями контекста. Если первой попавшейся страницей является классическая страница ASP, результаты могут отличаться от приложения к приложению. В целом AppPool настроен на использование последней версии инфраструктуры.
Linq: если вы используете Linq-To-SQL, вы вызываете SubmitChanges ()
в контексте данных, и это вызывает исключение (например, дублирование ключа или другое нарушение ограничения ), значения объектов-нарушителей остаются в вашей памяти во время отладки и будут повторно отправляться каждый раз, когда вы впоследствии вызываете SubmitChanges ()
.
А вот реальный кикер: неверные значения останутся в памяти , даже если вы нажмете кнопку «стоп» в своей среде IDE и перезапустите! Я не понимаю, почему кто-то подумал, что это хорошая идея - но этот маленький значок ASP.NET, который появляется up в системном трее остается запущенным и, похоже, сохраняет кэш объектов. Если вы хотите очистить память, щелкните этот значок правой кнопкой мыши и принудительно выключите его! GOTCHA!
Создание управления, подобное повторителю, и незнание о INamingContainer
.
Незнание об огромном количестве существующих и расширяемых функций в структуре. Часто переделываются такие вещи, как членство, роли, авторизация, карты сайта. Затем есть элементы управления и связанные теги, которые можно настроить для устранения проблем с идентификаторами клиентов, среди прочего. Также простые вещи, такие как незнание, как правильно использовать файл .config для автоматического импорта пространств имен в шаблоны, и возможность делать это на основе каталога. Менее известные вещи, такие как выражения тегов, также иногда могут быть полезны. Конечно, как и во всех фреймворках, есть кривая обучения и всегда что-то оставляет желать лучшего, однако чаще всего лучше настроить и расширить существующий фреймворк, а не создавать свою собственную.
Отладка - очень крутая функция ASP.NET, но, как только вы измените код в папке App_Code, вы запускаете перенастройку приложения, что приводит к тому, что все сеансы будут потеряны.
Это может стать очень раздражающим при отладке веб-сайта, но вы можете легко предотвратить это использовать режим « режим» : Это просто сервис для начала и строки для изменения в Web.config: Обратитесь к MSDN: http://msdn.microsoft.com/en-us/library/ms178586.aspx