#3 – C# 9.0 Top-level Statements

In this short tutorial, you will learn what’s the Top-level statements involved in C# 9.0.

Prerequisite

  • You’ll need to set up your machine to run .NET 5, which includes the C# 9 compiler.

Top-level Statements

Top-level Statement is one of the wonderful new features introduced by C# 9.0

We have created a hello world program in the first C# tutorial #1 C# Hello World with .NET CLI , the entry method is Main method which is included in Program class.

using System;
namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

Starting in C# 9, you don’t have to explicitly include a Main method in a console application project. Instead, you can use the top-level statements feature to minimize the code you have to write. In this case, the compiler generates a class and Main method entry point for the application.

Here’s a Program.cs file that is a complete C# program in C# 9:

using System;

Console.WriteLine("Hello World!");

Only two lines of code, that is cool!

So, what’s the top-level statements? It is the code statements that do not wrap in a class, and these code been wrote in a file which let’s call it top-level statements file.

Key Points

  • An application must have only one entry point, so a project can have only one file with top-level statements;
  • You can write a Main method explicitly in top-level statements file, but it can’t function as an entry point.
  • In a project with top-level statements, you can’t use the -main compiler option to select the entry point, even if the project has one or more Main methods.
  • Using directives must come first in the file.
  • Top-level statements are implicitly in the global namespace.
  • Namespaces and type definitions must come after the top-level statements.
  • Top-level statements can reference the args variable to access any command-line arguments that were entered. The args variable is never null but its Length is zero if no command-line arguments were provided. 

Top-level Statements Sample

Following is the sample for showing how to define and use method, class in the top-level statements file, in our case it is Program.cs .

using System;
using Test;

Console.WriteLine("Hello top-level statements !");

if (args.Length > 0)
{
    Console.WriteLine("Arguments: ");
    foreach (var arg in args)
    {
        Console.Write($" {arg} ");
    }
}
else
{
    Console.WriteLine("No arguments");
}
Console.WriteLine();


TestClass test = new TestClass();
test.TestOne();

TestTwo();



void TestTwo()
{
    Console.WriteLine("This is TestTwo method. under global namespace.");
}

namespace Test
{
    class TestClass
    {
        public void TestOne()
        {
            Console.WriteLine("This is TestOne method in TestClass under Test namespace.");
        }
    }
}

2 Replies to “#3 – C# 9.0 Top-level Statements

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.