Другое событие 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));
}
Ctrl-M + коллапс переключателя Ctrl-L все - разворачивают весь
Ctrl+L удаляет текущую выбранную строку. Это экономит время (если используется ответственно, конечно!!!)
Вот Макро-источник для моего aspx/aspx.cs плавника. Это работает в 2005, но это может иметь проблемы в 08.. Я не уверен... Это было взято от моего другого cpp/h плавника, таким образом, могла бы быть некоторая уборка, должен был сделать его лучшим, которым это могло быть. Мне не платят для записи Макросов, таким образом, я должен уничтожить, хотя их как можно быстрее, когда мне нужен тот.
Sub OpenASPOrCS()
'DESCRIPTION: Open .aspx file if in .cs file, open .cs file if in .aspx file
On Error Resume Next
' Get current doc path
Dim FullName
FullName = LCase(ActiveDocument.FullName)
If FullName = "" Then
MsgBox("Error, not a .cs or asp file!")
Exit Sub
End If
' Get current doc name
Dim DocName
DocName = ActiveDocument.Name
Dim IsCSFile
IsCSFile = False
Dim fn
Dim dn
If (Right(FullName, 3) = ".cs") Then
fn = Left(FullName, Len(FullName) - 3)
dn = Left(DocName, Len(DocName) - 3)
IsCSFile = True
ElseIf ((Right(FullName, 5) = ".aspx") Or (Right(FullName, 5) = ".ascx")) Then
fn = FullName + ".cs"
dn = DocName + ".cs"
Else
MsgBox("Error, not a .cs, or an asp file!")
Exit Sub
End If
Dim doc As EnvDTE.Documents
DTE.ItemOperations.OpenFile(fn)
doc.DTE.ItemOperations.OpenFile(fn)
If Err.Number = 0 Then
Exit Sub
End If
' First check to see if the file is already open and activate it
For Each doc In DTE.Documents()
If doc.Name = dn Then
doc.Active = True
Exit Sub
End If
Next
End Sub
Вставка копии из окна Watch расширенных свойств объекта в отладчике в Excel сохранит табличный формат и сохранит данные после того, как сеанс отладки будет закончен.
Я думаю способность щелкнуть правой кнопкой по Stored Procedure in Server Explorer и отладке..
Я всегда карта control + alt + f4
к документам. CloseAllWindows в опциях> среда> клавиатура.
несколько более интуитивно, чем использование мыши.
Существует статья об этом. Это, кажется, длинный набор.
Shift+Alt+F10 поднимает созданный в рефакторинге меню. Большой для добавления тупиков метода от интерфейсов и добавления Используя операторы автоматически для определенных классов.
не Может жить без него!:)
Нажмите клавишу F8 для циклического повторения через результаты поиска. (Shift+F8 для обратного направления)
Хит F12 для движения в определение переменной.
Сдвиг + высокий звук + клавиши со стрелками = выбор Блока!
Текстовые выборы перетаскивать-отбрасывания к окну Watch, в то время как в отладчике.
CTRL-D тогда вводит"> "тогда имени файла. Если стандартная панель инструментов произошла, crtl-d вставляют Вас, находят поле комбинированного списка и существует теперь выпадающее с файлами в Вашем решении, которые соответствуют запуску имени файла, которое Вы ввели. Выберите один, и это откроет его. Эта альтернатива открытому filedialog является потрясающей для больших решений с большим количеством каталогов.
Ctrl-T меняет местами последние две буквы. Например, «swithc» -> «switch».
Вы можете перетащить маленькую серую рамку над вертикальной полосой прокрутки, чтобы разделить окно на два представления одного и того же файла, которые можно прокручивать независимо - отлично, если вы сравниваете две части тот же файл.
View, Other Windows, Object Test Bench
Объектный тестовый стенд может использоваться для выполнения кода во время разработки.
Вы можете щелкнуть правой кнопкой мыши по типу в Class View , щелкните «Создать экземпляр» и выберите конструктор. Затем вы можете указать значения для его параметров, если они есть, и экземпляр отобразится в Object Test Bench.
Вы также можете вызвать статические методы, щелкнув тип правой кнопкой мыши и выбрав Invoke Static Method.
В диалоговом окне В Object Test Bench вы можете щелкнуть правой кнопкой мыши объект для вызова методов, а также навести на него курсор и увидеть его структуру (как при отладке). Вы также можете назначать эти переменные и взаимодействовать с ними в окне Immediate, также во время разработки.
Эта функция может быть полезна при написании библиотеки. Обратите внимание, что для этого необходимо сначала скомпилировать решение.
Отладчик .NET позволяет вам присваивать идентификаторы объектов и ссылаться на них через эти идентификаторы позже во время сеанса. Для этого щелкните правой кнопкой мыши переменную (или выражение), ссылающуюся на объект, в окне Autos / Locals / Watch или во всплывающей подсказке и выберите «Create Object ID». Идентификаторы представляют собой последовательные целые числа, начинающиеся с 1, с суффиксом «#» - например, 1 #
будет первым идентификатором, который вы создаете.
После создания идентификатора, если объект связан с данный идентификатор отображается в скобках.
Вы можете использовать 1 #
для ссылки на объект по идентификатору везде, где вы обычно можете использовать выражения - в окне наблюдения, в условиях условной точки останова и т. д. . Это'
Существование надстройки Resharper . Это делает работу с Visual Stupidio менее болезненной :)
На самом деле это не скрытая функция, но, тем не менее, ее стоит упомянуть, поскольку она содержит множество этих уловок и горячих клавиш.
Я не знаю, насколько это «скрыто», но некоторые новые люди могут не знать о конидитональных точках останова .
Задайте точку останова, затем щелкните ее правой кнопкой мыши и выберите Условие
], затем введите выражение вроде:
(b == 0)
И оно сработает, только если это правда. Очень полезно при попытке отладки определенного этапа цикла.
Очень малоизвестный факт: Visual Studio 2008 поддерживает реальные XSLT intellisense - не статический XSLT схематический, но реальный динамический intellisense включает автозаполнение названий шаблонов, режимов, имена параметров / переменных, атрибут установить имена, префиксы пространства имен и т. д.
Для всех версий VS мне нравится
Ctrl + Shift + V
для копирования данных в цикле буфера обмена.
В окне просмотра вы можете просмотреть текущее исключение, даже если у вас нет переменной для его удержания, добавив наблюдение за $ exception
Я удивлен, что никто об этом еще не упомянул. Я считаю, что способность записывать и воспроизводить серию действий иногда очень и очень помогает. Например, если я применяю какое-то повторяющееся действие к нескольким строкам в текстовом файле.
Например,
Ctrl + Shift + R (начать запись макроса)
выполнить серию нажатий клавиш
Ctrl + Shift + R (остановить запись макроса)
позже ....
Ctrl + Shift + P (воспроизведение нажатий клавиш)
Этот подход идеально подходит для коротких одноразовых манипуляций. Если что-то более сложное или понадобится более одного раза, я напишу сценарий.
Псевдовариабры в отладчике: http://msdn.microsoft.com/en-us/library/ms164891.aspx
$ Исключение
: избегает Необходимость дать ваши имена исключений (и вызвать переменную не ссылаться на предупреждения).
$ User
: говорит вам, какой пользователь запущен приложение ... иногда полезно при попытке диагностики вопросов разрешений.
Я случайно обнаружил это только сейчас. Если вы находитесь в любом месте строки и нажимаете Ctrl + Enter, то вставляется новая строка над текущей строкой и перемещается туда курсор.
Также, если нажать Ctrl + Shift + Enter, то будет вставлена новая строка ниже текущей строки и перемещен курсор туда (аналогично End, Enter)
Закройте все документы, кроме того, над которым вы работаете, щелкнув правой кнопкой мыши на вкладке документа и выбрав "Закрыть все, кроме этого". Это можно сделать и во многих других IDE и браузерах. Не очень большая функция, но я обнаружил, что использую ее более 10 раз в день. Эта функция была скрыта от меня в течение многих лет. Я должен сделать из нее комбинацию клавиш :p
Ctrl + Delete удаляет все слово (вперед)
Ctrl + Backspace удаляет все слово (назад)
Следующее хорошо известно, но не ошибаюсь ли я, говоря, что оно еще не было перечислено?
Ctrl + Shift + Space внутри круглых скобок вызова метода дает вам информацию о параметрах.
Вы когда-нибудь хотели найти функцию в текущем просматриваемом файле, но в нем слишком много членов? Нужен фильтр? Тогда окно Navigate - это то, что вам нужно. Вы активируете его нажатием Ctrl-, (запятая).
Во время отладки выберите идентификатор или выражение и перетащите его в окно наблюдения.
Это лучше, чем писать его с нуля :)
Ctrl + Tab - переключение между открытыми вкладками / окнами в Visual Studio 2005 и 2008.
Что-то вроде Alt + Tab в Windows, вызывает маленькое окно только для в настоящее время открывают файлы VS.
Вот пример снимка экрана:
alt text http://lh3.ggpht.com/_FWrysR9YI18/TFOGxnX9ShI/AAAAAAAAAQI/a-ByCRMmrpw/ctrltab.gif