Learn to use the code editor with C#
In this 10-minute introduction to the code editor in Visual Studio, we'll add code to a file to look at some of the ways that Visual Studio makes writing, navigating, and understanding C# code easier.
If you haven't already installed Visual Studio, go to the Visual Studio downloads page to install it for free.
This article assumes you're already familiar with C#. If you aren't, we suggest you look at a tutorial such as Get started with C# and ASP.NET Core in Visual Studio first.
Tip
To follow along with this article, make sure you have the C# settings selected for Visual Studio. For information about selecting settings for the integrated development environment (IDE), see Select environment settings.
Create a new code file
Start by creating a new file and adding some code to it.
Open Visual Studio. Press Esc or click Continue without code on the start window to open the development environment.
From the File menu on the menu bar, choose New > File, or press Ctrl+N.
In the New File dialog box, under the General category, choose Visual C# Class, and then choose Open.
A new file opens in the editor with the skeleton of a C# class. (Notice that we don't have to create a full Visual Studio project to gain some of the benefits that the code editor offers; all you need is a code file!)
Open Visual Studio. Press Esc, or choose Continue without code on the start window, to open the development environment.
From the File menu on the menu bar, choose New > File, or press Ctrl+N.
In the New File dialog box, under the General category, choose Visual C# Class, and then choose Open.
A new file opens in the editor with the skeleton of a C# class. You don't have to create a full Visual Studio project to gain some of the benefits that the code editor offers—all you need is a code file.
Use code snippets
Visual Studio provides useful code snippets that you can use to quickly and easily generate commonly used code blocks. Code snippets are available for different programming languages including C#, Visual Basic, and C++.
Let's add the C# void Main
snippet to our file.
Place your cursor just above the final closing brace } in the file, and type the characters
svm
(which stands forstatic void Main
—don't worry too much if you don't know what that means).A pop-up dialog box appears with information about the
svm
code snippet.Press Tab twice to insert the code snippet.
You see the
static void Main()
method signature get added to the file. The Main() method is the entry point for C# applications.
The available code snippets vary for different programming languages. You can look at the available code snippets for your language by choosing Edit > IntelliSense > Insert Snippet or pressing Ctrl+K, Ctrl+X, and then choosing your language's folder. For C#, the list looks like this:
Place your cursor just above the final closing brace
}
in the file, and type the characterssvm
.svm
stands forstatic void Main
—don't worry if you don't know what that means yet.A pop-up dialog box appears with information about the
svm
code snippet.Press Tab twice to insert the code snippet.
You'll see the
static void Main()
method signature get added to the file. The Main() method is the entry point for C# applications.
Available code snippets vary for different programming languages. You can look at the available code snippets for your language by choosing Edit > IntelliSense > Insert Snippet or pressing Ctrl+K, Ctrl+X, and then choosing the folder for your programming language. For C#, the snippet list looks like this:
The list includes snippets for creating a class, a constructor, a for loop, an if or switch statement, and more.
Comment out code
The toolbar, which is the row of buttons under the menu bar in Visual Studio, can help make you more productive as you code. For example, you can toggle IntelliSense completion mode (IntelliSense is a coding aid that displays a list of matching methods, amongst other things), increase or decrease a line indent, or comment out code that you don't want to compile. In this section, we'll comment out some code.
Paste the following code into the
Main()
method body.// _words is a string array that we'll sort alphabetically string[] _words = { "the", "quick", "brown", "fox", "jumps" }; string[] morewords = { "over", "the", "lazy", "dog" }; IEnumerable<string> query = from word in _words orderby word.Length select word;
We're not using the
morewords
variable, but we may use it later so we don't want to completely delete it. Instead, let's comment out those lines. Select the entire definition ofmorewords
to the closing semicolon, and then choose the Comment out the selected lines button on the toolbar. If you prefer to use the keyboard, press Ctrl+K, Ctrl+C.The C# comment characters
//
are added to the beginning of each selected line to comment out the code.
The toolbar, which is the row of buttons under the menu bar in Visual Studio, helps make you more productive as you code. For example, you can toggle IntelliSense completion mode, increase or decrease a line indent, or comment out code that you don't want to compile.
Let's comment out some code.
Paste the following code into the
Main()
method body.// someWords is a string array. string[] someWords = { "the", "quick", "brown", "fox", "jumps" }; string[] moreWords = { "over", "the", "lazy", "dog" }; // Alphabetically sort the words. IEnumerable<string> query = from word in someWords orderby word select word;
We're not using the
moreWords
variable, but we might use it later so we don't want to delete it. Instead, we'll comment out those lines. Select the entire definition ofmoreWords
down to the closing semicolon, and then choose the Comment out the selected lines button on the toolbar. If you prefer to use the keyboard, press Ctrl+E, Ctrl+C.The C# comment characters
//
are added to the beginning of each selected line to comment out the code.
Collapse code blocks
We don't want to see the empty constructor that was generated for Class1
, so to unclutter our view of the code, let's collapse it. Choose the small gray box with the minus sign inside it in the margin of the first line of the constructor. Or, if you prefer to use the keyboard, place the cursor anywhere in the constructor code and press Ctrl+M, Ctrl+M.
The code block collapses to just the first line, followed by an ellipsis (...
). To expand the code block again, click the same gray box that now has a plus sign in it, or press Ctrl+M, Ctrl+M again. This feature is called Outlining and is especially useful when you're collapsing long methods or entire classes.
The code block collapses to just the first line, followed by an ellipsis (...
). To expand the code block again, select the same gray box that now has a plus sign in it, or press Ctrl+M, Ctrl+M again. This feature is called Outlining and is especially useful when you're collapsing long methods or entire classes.
View symbol definitions
The Visual Studio editor makes it easy to inspect the definition of a type, method, etc. One way is to navigate to the file that contains the definition, for example by choosing Go to Definition or pressing F12 anywhere the symbol is referenced. An even quicker way that doesn't move your focus away from the file you're working in is to use Peek Definition. Let's peek at the definition of the string
type.
Right-click on any occurrence of
string
and choose Peek Definition from the content menu. Or, press Alt+F12.A pop-up window appears with the definition of the
String
class. You can scroll within the pop-up window, or even peek at the definition of another type from the peeked code.Close the peeked definition window by choosing the small box with an "x" at the top right of the pop-up window.
The Visual Studio editor makes it easy to inspect the definition of a type, method, or variable. One way is to go to the definition, in whichever file has it, by choosing Go to Definition or pressing F12 anywhere a symbol is referenced. An even quicker way that doesn't move your focus away from the code you're working on is to use Peek Definition.
Let's peek at the definition of the string
type.
Right-click on any occurrence of
string
and choose Peek Definition from the content menu. Or, press Alt+F12.A pop-up window appears with the definition of the
String
class. You can scroll within the pop-up window, or even peek at the definition of another type from the peeked code.Close the peek definition window by choosing the small box with an "x" at the top right of the pop-up window.
Use IntelliSense to complete words
IntelliSense is an invaluable resource when you're coding. It can show you information about available members of a type, or parameter details for different overloads of a method. You can also use IntelliSense to complete a word after you type enough characters to disambiguate it. Let's add a line of code to print out the ordered strings to the console window, which is the standard place for output from the program to go.
Below the
query
variable, start typing the following code:foreach (string str in qu
You see IntelliSense show you Quick Info about the
query
symbol.To insert the rest of the word
query
by using IntelliSense's word completion functionality, press Tab.Finish off the code block to look like the following code. You can even practice using code snippets again by entering
cw
and then pressing Tab twice to generate theConsole.WriteLine
code.foreach (string str in query) { Console.WriteLine(str); }
IntelliSense is an invaluable resource when you're coding. It can show you information about available members of a type, or parameter details for different overloads of a method. You can also use IntelliSense to complete a word after you type enough characters to disambiguate it.
Let's add a line of code to print out the ordered strings to the console window, which is the standard place for output from the program to go.
Below the
query
variable, start typing the following code:foreach (string str in qu
You'll see an IntelliSense pop-up appear with information about the
query
symbol.To insert the rest of the word
query
by using IntelliSense word completion, press Tab.Finish off the code block to look like the following code. You can practice further with code snippets by entering
cw
and then pressing Tab twice to generate theConsole.WriteLine
statement.foreach (string str in query) { Console.WriteLine(str); }
Refactor a name
Nobody gets code right the first time, and one of the things you might have to change is the name of a variable or method. Let's try out Visual Studio's refactor functionality to rename the _words
variable to words
.
Place your cursor over the definition of the
_words
variable, and choose Rename from the right-click or context menu, or press Ctrl+R, Ctrl+R.A pop-up Rename dialog box appears at the top right of the editor.
Enter the desired name words. Notice that the reference to
words
in the query is also automatically renamed. Before you press Enter, select the Include comments checkbox in the Rename pop-up box.Press Enter.
Both occurrences of
words
have been renamed, as well as the reference towords
in the code comment.
Nobody gets code right the first time, and one of the things you might have to change is the name of a variable or method. Let's try out Visual Studio's refactor functionality to rename the someWords
variable to unsortedWords
.
Place your cursor over the definition of the
someWords
variable, and choose Rename from the right-click or context menu, or press F2.A Rename dialog box appears at the top right of the editor.
Enter the desired name unsortedWords. You'll see that the reference to
unsortedWords
in thequery
assignment statement is also automatically renamed. Before you press Enter, select the Include comments checkbox in the Rename pop-up box.Press Enter, or choose Apply in the Rename dialog box.
Both occurrences of
someWords
in your code have been renamed, as well as the textsomeWords
in your code comment.