Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O file modificador restringe a visibilidade de um tipo de topo ao ficheiro que contém a sua declaração. O modificador file é mais frequentemente aplicado a tipos escritos por um gerador de código-fonte. Os tipos de arquivos locais fornecem aos geradores de origem uma maneira conveniente de evitar colisões de nomes entre os tipos gerados. O modificador file declara um tipo de arquivo local, como neste exemplo:
file class HiddenWidget
{
// implementation
}
Quaisquer tipos aninhados dentro de um tipo local-local de ficheiros são também visíveis apenas dentro do ficheiro que contém a sua declaração. Outros tipos em um assembly podem usar o mesmo nome que um tipo de arquivo local. Como o tipo local do ficheiro é visível apenas no ficheiro que contém a sua declaração, estes tipos não criam uma colisão de nomenclatura.
Um tipo local de ficheiro não pode ser o tipo de retorno ou parâmetro de qualquer membro declarado num tipo não-local de ficheiro. Um tipo de local de ficheiro não pode ser um membro de campo de um não local de ficheiro. No entanto, um tipo mais visível pode implementar implicitamente um tipo de interface arquivo-local. O tipo também pode implementar explicitamente uma interface de arquivo local, mas implementações explícitas só podem ser usadas dentro do mesmo arquivo.
O exemplo a seguir mostra um tipo público que usa um tipo local de ficheiro para fornecer um método de trabalho. Além disso, o tipo público implementa uma interface arquivo-local implicitamente:
// In File1.cs:
file interface IWidget
{
int ProvideAnswer();
}
file class HiddenWidget
{
public int Work() => 42;
}
public class Widget : IWidget
{
public int ProvideAnswer()
{
var worker = new HiddenWidget();
return worker.Work();
}
}
Em outro arquivo de origem, você pode declarar tipos que têm os mesmos nomes que os tipos de arquivo local. Os tipos de arquivo local não estão visíveis:
// In File2.cs:
// Doesn't conflict with HiddenWidget
// declared in File1.cs
public class HiddenWidget
{
public void RunTask()
{
// omitted
}
}
A pesquisa de membro prefere um tipo de arquivo local declarado no mesmo arquivo a um tipo não local de arquivo declarado em um arquivo diferente. Esta regra garante que um gerador de origem possa confiar na resolução de pesquisa de membros para um tipo de arquivo local sem ambiguidade com outras declarações de tipo. No exemplo anterior, todos os usos de HiddenWidget em File1.cs resolvem para o tipo de ficheiro-local declarado em File1.cs. A declaração de arquivo local de HiddenWidget oculta a declaração pública em File2.cs.
Especificação da linguagem C#
Para mais informações, consulte Acessibilidade Declarada na Especificação da Linguagem C# e a especificação da característica de tipos locais de ficheiro .
Ver também
- Palavras-chave C#
- modificadores de acesso
- Níveis de Acessibilidade
- Modificadores
- pública
- protegido
- interno