Jeden miły cechą oknie Immediate w Visual Studio jest jego zdolność do oceny wartości zwracanej przez metodę szczególnie jeśli jest ona wywoływana przez kod klienta ale to nie należy do przypisania zmiennej. W trybie debugowania, jak już wspomniano, można wchodzić w interakcje ze zmiennymi i wykonywać wyrażenia w pamięci, co odgrywa ważną rolę w tym.
Na przykład, jeśli masz metodę statyczną, która zwraca sumę dwóch liczb, takich jak:
private static int GetSum(int a, int b)
{
return a + b;
}
Następnie w oknie bezpośrednim możesz wpisać:
? GetSum(2, 4)
6
Jak widać, działa to bardzo dobrze w przypadku metod statycznych. Jeśli jednak metoda nie jest statyczna, musisz wejść w interakcję z odwołaniem do obiektu, do którego należy metoda.
Załóżmy na przykład, że tak wygląda Twoja klasa:
private class Foo
{
public string GetMessage()
{
return "hello";
}
}
Jeśli obiekt już istnieje w pamięci i znajduje się w zakresie, możesz wywołać go w oknie bezpośrednim, o ile został utworzony przed bieżącym punktem przerwania (lub przynajmniej przed każdym miejscem, w którym kod zostanie wstrzymany w trybie debugowania):
? foo.GetMessage(); // object ‘foo’ already exists
"hello"
Ponadto, jeśli chcesz współdziałać i przetestować metodę bezpośrednio, bez polegania na istniejącej instancji w pamięci, możesz utworzyć własną instancję w oknie bezpośrednim:
? Foo foo = new Foo(); // new instance of ‘Foo’
{temp.Program.Foo}
? foo.GetMessage()
"hello"
Możesz pójść o krok dalej i tymczasowo przypisać wyniki metody do zmiennych, jeśli chcesz wykonać dalsze oceny, obliczenia itp .:
? string msg = foo.GetMessage();
"hello"
? msg + " there!"
"hello there!"
Ponadto, jeśli nie chcesz nawet deklarować nazwy zmiennej dla nowego obiektu i po prostu chcesz uruchomić jedną z jego metod / funkcji, zrób to:
? new Foo().GetMessage()
"hello"
Bardzo powszechnym sposobem sprawdzenia wartości metody jest wybranie nazwy metody klasy i wykonanie „Dodaj obserwację”, aby zobaczyć jej aktualną wartość w oknie czujki. Jednak ponownie obiekt musi zostać utworzony i znajdować się w zasięgu, aby została wyświetlona poprawna wartość. Jest to znacznie mniej wydajne i bardziej restrykcyjne niż użycie okna bezpośredniego.
Oprócz metod sprawdzania możesz wykonywać proste równania matematyczne:
? 5 * 6
30
lub porównaj wartości:
? 5==6
false
? 6==6
true
Znak zapytania („?”) Jest niepotrzebny, jeśli jesteś bezpośrednio w oknie bezpośrednim, ale jest tu uwzględniony dla przejrzystości (aby odróżnić wpisane wyrażenia od wyników). Jeśli jednak jesteś w oknie poleceń i potrzebujesz zrobić kilka szybkich rzeczy w oknie bezpośrednim, a następnie poprzedzaj swoje instrukcje znakiem „?” i gotowe.
Intellisense działa w oknie bezpośrednim , ale czasami może być nieco niespójne. Z mojego doświadczenia wynika, że jest dostępny tylko w trybie debugowania, ale nie w trybie projektowania, bez debugowania.
Niestety kolejną wadą okna bezpośredniego jest to, że nie obsługuje on pętli.