Kolejna ciekawostka związana z IntelliSense w Visual Studio 2010.

Często bywa tak, że IntelliSense próbuje być o wiele mądrzejsze niż programista i na siłę dopasowuje wybrane przez siebie nazwy klas i zmiennych nawet jeżeli nie było to naszym zamiarem. Jednym z przykładów może być tu odwołanie do nieistniejącej jeszcze klasy, którą dopiero zadeklarujemy. Szybkie demo polega na wpisaniu w kodzie aplikacji słowa Time – taką właśnie klasę chciałbym za moment dodać, natomiast narazie tworzę tylko kod, który będzie wykorzystywał obiekt tego typu.

Zatem po wpisaniu Time wciskam spację, żeby kontynułować kod i … okazuje się, że Visual Studio zakłada, że wie lepiej i IntelliSense wpisuje w miejsce Time typ TimeoutException

Co w związku z tym? Ctrl + Z i piszemy dalej… ??? Nie

Tryb uzupełniania i tryb sugestii

Opisane przeze mnie zachowanie jest spowodowane tym, że IntelliSense posiada dwa tryby: uzupełniania (domyślny) i sugestii. Jak widać tryb uzupełniania może być czasem uciążliwy… Można natomiast skorzystać z drugiego trybu, czyli z sugestii… Do przełączania się pomiędzy trybami IntelliSense służy kombinacja klawiszy CTRL + ALT + SPACE. Po zmianie trybu uzyskujemy efekt widoczny poniżej:

W tym trybie po wciśnięciu spacji IntelliSense nie wpisuje niechcianego przez nas typu TimeoutException… I o to właśnie chodziło.

Powiecie “Ok, ale co jeżeli chcę jednak wpisać TimeoutException a jestem w trybie sugestii?” Drogi są dwie:
1 – Tabulator pozwala na uzupełnienie sugerowanego tekstu
2 – Strzałką wybieramy sugestią i klikamy spację.

Mi osobiście opcja ta się spodobała. Oczywiście trzeba do niej podchodzić z rozsądkiem, żeby nie okazało się, że zamiast przyspieszyć spowolni proces kodowania :)