F10 - Если следующая строка кода вызывает другой метод/функцию в другом месте или в каком-либо другом коде, отладчик выполнит ее, но не будет проходить через нее по строкам. Вы увидите, как отладчик переходит к следующей строке в фрагменте/странице кода, который вы сейчас просматриваете.
F11 - отладчик будет следовать за любым исполнением по строкам, поэтому, если эта строка кода вызывает другой метод или обращается к данным из другого места или другого класса, он также пройдет через это - прыг из класса в класс, если это необходимо , Я считаю это рекурсивным.
class A{
public static void main(string[] args){
A.method1();
A.method2();
A.method3(B.GetMeAnArrayofSomething());
B.method4();
}
}
class B{
public GetMeAnArrayOfSomething(){
string[] myArray = new string[5];
for(int i=0;i<=5;i++){
//dosomething repetive
}
return myArray;
}
}
Итак, вы переходите по основному методу класса А. Когда вы доберетесь до A.method3
, вы можете нажать F10 и переместить селектор линии на A.method4() ИЛИ вы можете нажать F11 и пройти по методу GetMeAnArrayOfSomething класса B по очереди.
Вы можете щелкнуть правой кнопкой мыши и выбрать «Добавить часы», чтобы добавить переменные/объекты в окно непрерывных часов. Также функция Quickwatch добавляет ее к менее постоянному виду. Лично я использую окно Immediate много. Его командная строка настолько быстра и проста, если вам нравится такая штука (я знаю).
HTH
Если у меня есть утверждения, которые не вызывают функцию, которая находится где-то в другом месте, делают ли обе клавиши то же самое? – frenchie
@frenchie: Предполагая, что когда вы говорите «где-то еще», вы имеете в виду в другом файле dll - там, где у вас нет этого кода или ресурсов отладки, - тогда ДА оба эти ключа работают одинаково. – VoodooChild
ОК, спасибо за объяснение! – frenchie