Navigate C# code
In addition to textual search and editor navigation, which are always available, enabling Smart Mode unlocks a number of ways to navigate with the knowledge of your solution structure, that is where and how each symbol is defined and used.
Multiple results from navigation commands are listed in a frame right inside the editor, where you can switch between results by pressing ↑ and ↓, preview the code surrounding each result, and then jump to the desired result by pressing ⏎ or double-clicking it.
The frame is not closed automatically when you switch focus to the surrounding code; this lets you see both the context of the symbol in the current file and the contents of navigation results. To close the results frame, press Esc or click X in the frame. If you want to close the frame but preserve the results, press ⌘ ⏎ or click Open in Tab .
Usages
⌘ U or
You can navigate from the declaration or any usage of a symbol (type, member, variable, parameter) to any reference to that symbol in the whole solution. The usages are listed in a frame right inside the editor, where you can preview the surrounding code and jump to the desired usage:
Some kinds of usages can be filtered. For example, when you find usages of a variable, you can choose to only show read or write usages:
Definition
⌘ B, Ctrl/Cmd-click, or
You can navigate from any usage of a symbol (type, member, variable, parameter) to the declaration of that symbol.
Type Definition
⌘ ⇧ B or
You can navigate from a variable or parameter to the declaration of its type. For example, if you have a variable Foo myVar = new Foo();
and invoke this command on a usage of myVar
, it will bring you to the declaration of the class Foo
.
Implementations
⌘ ⌥ B or
You can navigate from a type or a member to any of its implementations or overrides. If the symbol is implemented or overridden anywhere in the solution, the derived symbols are listed in a frame right inside the editor:
Super Symbols
You can navigate from a type or a member to any of its base symbols in the whole solution. Base types or members are listed in a frame right inside the editor where you can preview the surrounding code and jump to the desired symbol: