1
resposta

[Dúvida] Não usar instruções de nível superior

Quando vou criar um novo projeto, antes de realizada tal ação, aparece essa frase "Não usar instruções de nível superior" Seguida de uma caixinha para marcação. No caso, na vídeo aula não aparece tal instrução.

O que isso significa?

1 resposta

Brenno,

É uma diretiva do novo Framework 5.0 RC1 (Release Candidate 1) e seguintes.

O links abaixo irão explicar com detalhes, em especial o link do José Carlos Macoratti:

==========================================================

Instruções de nível superior – Programas sem métodos Main

Artigo - 22/09/2022 - 3 minutos para o fim da leitura

Do C# 9 em diante, você não precisa incluir explicitamente um método Main em projetos de aplicativo de console. Em vez disso, você pode usar o recurso de instruções de nível superior para minimizar o volume de código que precisa escrever. Nesse caso, o compilador gera uma classe e um ponto de entrada do método Main para o aplicativo.

Console.WriteLine("Hello World!");

...

Namespaces e definições de tipo

Um arquivo com instruções de nível superior também pode conter namespaces e definições de tipo, mas devem vir após as instruções de nível superior. Por exemplo:

MyClass.TestMethod();
MyNamespace.MyClass.MyMethod();

public class MyClass
{
    public static void TestMethod()
    {
        Console.WriteLine("Hello World!");
    }

}

namespace MyNamespace
{
    class MyClass
    {
        public static void MyMethod()
        {
            Console.WriteLine("Hello World from MyNamespace.MyClass.MyMethod!");
        }
    }
}

...

https://learn.microsoft.com/pt-br/dotnet/csharp/fundamentals/program-structure/top-level-statements

==========================================================

Novidades do C# 9.0

Artigo - 22/09/2022 - 19 minutos para o fim da leitura

O C# 9.0 adiciona os seguintes recursos e aprimoramentos à linguagem C#:

Instruções de nível superior

Instruções de nível superior removem a cerimônia desnecessária de muitos aplicativos. Considere o programa canônico "Olá, Mundo!":

using System;

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

Só há uma linha de código que faz qualquer coisa. Com instruções de nível superior, você pode substituir todo esse código clichê pela diretiva using e pela única linha que faz o trabalho:

using System;

Console.WriteLine("Hello World!");

Se você quisesse um programa de uma linha, poderia remover a diretiva using e usar o nome de tipo totalmente qualificado:

System.Console.WriteLine("Hello World!");

...

https://learn.microsoft.com/pt-br/dotnet/csharp/whats-new/csharp-9

==========================================================

C# 9.0 - Top Level Statements

Hoje vamos apresentar o novo recurso do C# 9.0 chamado Top-Level Statements, ou, Instruções de nível superior, que simplifica a criação de classes.

Quando você cria um projeto Console usando as versões anteriores do C# você vai obter por padrão o seguinte template de código :

template de código

São doze linhas de código (tudo bem uma esta em branco) mas mesmo assim é um tanto verboso para uma simples aplicação que vai apenas escrever 'Hello World' no console.

...

Mas com o C# 9.0 que acompanha o .NET 5.0 isso mudou.

Importante: Para usar o C# 9.0 e conferir este recurso você precisa instalar o .NET 5.0 RC1 e o Visual Studio 2019 Preview. O arquivo de projeto .csproj deve possuir a seguinte definição:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>  
    <OutputType>Exe</OutputType>
         <TargetFramework>net5.0</TargetFramework>
        <LangVersion>9.0</LangVersion>
  </PropertyGroup>

</Project>

...

Clicando duas vezes sobre o método $Main você pode ver o Intermediate Language Code abaixo:

Intermediate Language Code

Observe que temos a instrução Console.WriteLine de nível superior adicionada a esse método $Main gerado, ou seja , todas as suas instruções de nível superior são adicionadas ao método $Main gerado.

Assim continuamos tendo apenas um ponto de entrada da aplicação definido pelo método Main(), e se você tentar incluir outra instrução de nível superior o compilador não vai permitir.

Dessa forma para um arquivo com instruções de nível superior, um método $Main é gerado e definido como ponto de entrada. Como pode haver apenas um ponto de entrada para seu aplicativo .NET, só pode haver exatamente um arquivo em seu projeto que tenha instruções de nível superior.

...

https://www.macoratti.net/20/11/c9_instsup1.htm

==========================================================

[]'s,

Fabio I.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software