Novidades do C# 11: File-scoped types

Renato Groffe
2 min readJan 2, 2023

O C# 11 traz também uma nova possibilidade para definir o escopo de uma classe/tipo, além das implementações já existentes e baseadas no uso de modificadores como public, private, internal

Trata-se da funcionalidade batizada como File-scoped types (também chamada de File local types), com a qual podemos criar classes/tipos cujo escopo está restrito ao arquivo .cs em que tais construções foram definidas. Para isto utilizaremos a palavra-chave file na declaração de um tipo.

Supondo um mesmo projeto (ExemploFileScopedType) em foram definidas as classes ClasseTeste1 e Mensagem num arquivo chamado Teste1.cs:

E os tipos ClasseTeste2 e Mensagem, desta vez em outro arquivo chamado Teste2.cs:

Obviamente que as 2 declarações de Mensagem pertencentes a um mesmo namespace (ExemploFileScopedType) resultarão em erros durante a compilação do projeto:

Esses mesmos erros serão apontados se utilizarmos o Visual Studio 2022:

Clique nesta imagem para visualizar com uma melhor resolução

Podemos corrigir este problema substituindo em Teste2.cs o modificador public da classe Mensagem por file, como indicado na próxima listagem:

Com isto o Visual Studio 2022 não acusará mais erros:

Clique nesta imagem para visualizar com uma melhor resolução

Na listagem a seguir temos um exemplo de utilização dos tipos apresentados nas listagens anteriores (no arquivo Program.cs):

A execução deste exemplo trará um resultado similar ao da imagem seguinte:

O código desse projeto foi disponibilizado no GitHub:

https://github.com/renatogroffe/CSharp11-FileScopedTypes

Caso achem útil esta solução, peço por favor um ⭐️ no repositório apoiando. Fica também o convite para que vocês me sigam lá no GitHub!

--

--

Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker