Our First C# Program
Create our first C# program.
We'll cover the following
Visual Studio
For our first .NET application, we’ll need a text editor to type in our code, a compiler to get an executable from our code, and a copy of the .NET platform to run the application.
To make the process easier, developers often use Integrated Development Environments (IDEs) that can edit, compile, and run applications. For a .NET developer, Visual Studio is often the best choice.
Use the command line
It’s possible to write and run .NET apps without the use of Visual Studio. .NET
First, create a new folder with the name of the app.
> mkdir FirstProgram
> cd FirstProgram
Then, use the dotnet new
command to create a .NET project inside this directory.
> dotnet new console
The instruction above creates a console application inside the current directory. Let’s inspect the contents.
> ls
There are three items: obj
folder, .csproj
file, which defines the project, and the Program.cs
file that contains our Main
method.
Now, we’re ready to compile and run our project.
> dotnet run
Hello World!
Try these commands in the following terminal. It has .NET SDK pre-installed.
Note: Because .NET SDK installation depends on the specific operating system we use, installation details are omitted here. Consult this page for installation instructions.
The Program.cs
file is always there in the default project template. Let’s explore this file in more detail.
The Program.cs
file
// Import the System namespaceusing System;// Declare our own namespacenamespace FirstProgram{// Declare a classclass Program{// Declare a methodstatic void Main(string[] args){// Print to the consoleConsole.WriteLine("Hello World!");}}}
- At the top, we have the
using
statement that imports theSystem
namespace to our file (line 2). Namespaces are logical groupings of types, and theSystem
namespace contains fundamental .NET classes. We’re interested in namespaces primarily because they help avoid name collisions. - On line 5, we declare that we’ll use a custom
FirstProgram
namespace to contain our code. If we have another file with logically related functionality, we can use the same namespace so that interrelated classes are grouped. - Classes are declared in a similar fashion. We use the
class
keyword along with the name and the contents are written between the two curly braces (line 8). - C# has a C-like syntax. Each line ends with a semicolon and each block of code is enclosed in curly braces.
- A class may contain fields, methods, properties, and other members. In this case, the
Main()
method (on line 11) is created by default.
The Main()
method
In .NET, the Main()
method is the program’s entry point. All applications, be they simple one-line programs like the one above or complex software that predicts stock prices, must have the Main()
method somewhere. In the latest versions of .NET, manually creating the Main()
method is optional because it’s generated by the compiler for us.
The words static
and void
are discussed in detail later. For now, know that the static
keyword creates a static
member, while void
is used to indicate that a method returns no value.
We have the method parameters in parentheses(line 11). The string[] args
is an array called args
that stores values of the string
type. We don’t need it in this case, but in a real-life application, these are the parameter that pass when the program launch from the command line.
Just like a namespace or a class, methods must have a body that’s put between the curly braces. The body of a method is the functionality it performs. In our simple example, all the Main()
method does is print "Hello World!"
to the console (line 14).
Hit the “Run” button to execute the code!
Modify our code
Let’s experiment a bit. Notice that Console.WriteLine()
can be used to print text to the console. Let’s make our program more dynamic so that it prints what we want.
Replace the body of the Main()
method with the following code:
Console.WriteLine("Where are you from?");
string yourPlaceOfOrigin = Console.ReadLine();
Console.WriteLine($"Hello to everyone from {yourPlaceOfOrigin}");
using System;namespace FirstProgram{class Program{static void Main(string[] args){// Replace with the given codeConsole.WriteLine("Hello World!");}}}
Enter the input below
The Console.ReadLine()
function reads text from the keyboard. We can enter our text below the code editor to imitate this keyboard input.
In string yourPlaceOfOrigin = Console.ReadLine();
, we’re saying that we want to create a new variable of the string
type and assign the value from Console.ReadLine()
to it.
To use the value of this string
variable inside a string
literal, we use the $
sign when starting a new string
and place the variable name inside the curly braces.
Note: The
Console
class used throughout our example is located in theSystem
namespace. We can use this class because we’ve imported the namespace with theusing
statement on the top.
We’ve now created our first .NET program! It’s the first step in our journey towards becoming a .NET specialist. Let’s dive a little deeper!