C# IntelliSense

Aplica-se a:yes Visual Studio noVisual Studio para Mac noVisual Studio Code

O IntelliSense C# está disponível ao codificar no editor e durante a depuração na janela de comando do modo Imediato .

Listas de conclusão

As listas de preenchimento do IntelliSense no C# contêm tokens de Listar Membros, Completar Palavra e muito mais. Ele fornece acesso rápido a:

  • Membros de um tipo ou namespace

  • Variáveis, comandos e nomes de funções

  • Snippets de código

  • Palavras-chave de linguagem

  • Métodos de extensão

A lista de conclusão no C# também é inteligente o suficiente para filtrar tokens irrelevantes e pré-selecionar um token com base no contexto. Para obter mais informações, consulte listas de conclusão filtradas.

Snippets de código em listas de conclusão

No C#, a lista de preenchimento inclui snippets de código para ajudá-lo a inserir com facilidade corpos de código predefinidos no programa. Os snippets de código são exibidos na lista de conclusão como texto de atalho do snippet. Para obter mais informações sobre snippets de código que estão disponíveis em C# por padrão, consulte snippets de código em C#.

Palavras-chave de linguagem em listas de conclusão

No C#, a lista de preenchimento também inclui palavras-chave. Para obter mais informações sobre palavras-chave de linguagem C#, consulte palavras-chave em C#.

Métodos de extensão em listas de conclusão

No C#, a lista de conclusão inclui métodos de extensão que estão no escopo.

Observação

A lista de conclusão não exibe todos os métodos de extensão para objetos String.

Os métodos de extensão usam um ícone diferente dos métodos de instância. Para obter um guia de referência dos ícones de lista, confira Modo de Exibição de Classe e ícones do Pesquisador de Objetos. Quando um método de instância e um método de extensão com o mesmo nome estão no escopo, a lista de preenchimento exibe o ícone do método de extensão.

Listas de preenchimento filtradas

O IntelliSense remove membros desnecessários da lista de preenchimento usando filtros. O C# filtra as listas de preenchimento exibidas para estes itens:

  • Interfaces e classes base: o IntelliSense remove automaticamente itens das listas de conclusão de interface e de classe base, tanto nas listas de interface quanto nas listas de restrição de base de declaração de classe. Por exemplo, enumerações não aparecem na lista de preenchimento nas classes base, pois enumerações não podem ser usadas para as classes base. A lista de preenchimento de classes base contém apenas interfaces e namespaces. Se você selecionar um item na lista e, em seguida, digitar uma vírgula, o IntelliSense removerá as classes base da lista de preenchimento, pois o C# não dá suporte à herança múltipla. O mesmo comportamento também ocorre em cláusulas de restrição.

  • Atributos: ao aplicar um atributo a um tipo, a lista de conclusão é filtrada para que ela tenha somente os tipos que descendem dos namespaces que contêm esses tipos, como Attribute.

  • Cláusulas Catch

  • Inicializadores de objeto: somente os membros que podem ser inicializados serão exibidos na lista de conclusão.

  • Palavra-chave new: ao digitar new e, em seguida, pressionar o Espaço, uma lista de conclusão é exibida. Um item é selecionado na lista automaticamente, de acordo com o contexto no código. Por exemplo, os itens são selecionados automaticamente na lista de preenchimento em busca de declarações e instruções de retorno nos métodos.

  • Palavra-chave enum: ao pressionar o Espaço após um sinal de igual para uma atribuição de enum, uma lista de conclusão será exibida. Um item é selecionado na lista automaticamente, de acordo com o contexto no código. Por exemplo, os itens serão selecionados automaticamente na lista de conclusão depois que você digitar a palavra-chave retorno e quando fizer uma declaração.

  • Operadores as e is: uma lista de conclusão filtrada é exibida automaticamente ao pressionar o Espaço depois de digitar a palavra-chave as ou is.

  • Eventos: ao digitar a palavra-chave event, a lista de conclusão conterá apenas os tipos de delegado.

  • A ajuda do parâmetro classifica automaticamente para a primeira sobrecarga de método que corresponde aos parâmetros, conforme eles são inseridos. Se houver várias sobrecargas de método disponíveis, será possível usar as setas para cima e para baixo para navegar para a próxima sobrecarga possível na lista.

Membros usados mais recentemente

O IntelliSense lembra os membros selecionados recentemente na caixa pop-up Listar Membros quanto à conclusão automática de nome de objeto. Na próxima vez que você usar a Lista de Membros, os membros usados mais recentemente serão mostrados na parte superior. O histórico dos membros mais usados recentemente é limpo entre cada sessão do Visual Studio.

override

Ao digitar override e, em seguida, pressionar Espaço, o IntelliSense exibe todos os membros da classe base válidos que podem ser substituídos em uma caixa de listagem pop-up. Digitar o tipo de retorno do método após override solicitará que o IntelliSense mostre apenas os métodos que retornam o mesmo tipo. Quando o IntelliSense não conseguir encontrar nenhuma correspondência, ele exibirá todos os membros da classe base.

IntelliSense aprimorado com a inteligência artificial

O Visual Studio IntelliCode fornece listas de conclusão do IntelliSense aprimoradas com inteligência artificial. O IntelliCode prevê a API mais provavelmente correta a ser usada, em vez de apenas apresentar uma lista de membros em ordem alfabética. Ele usa os seus padrões e contexto de código atuais para fornecer a lista dinâmica.

Geração automática de código

Adicionar usando

A operação Adicionar usando do IntelliSense adiciona automaticamente a diretiva using necessária em seu arquivo de código. Esse recurso permite que você mantenha o foco no código que está sendo escrito, em vez de precisar mudar o foco para outra parte do código.

Para iniciar a operação Adicionar usando , posicione o cursor em uma referência de tipo que não pode ser resolvida. Por exemplo, quando você cria um aplicativo de console e, em seguida, adiciona XmlReader ao corpo do método Main, um rabisco vermelho aparece nessa linha de código, porque a referência de tipo não pode ser resolvida. Em seguida, você pode invocar a operação Adicionar usando por meio da Ação Rápida. As Ações Rápidas ficam visíveis apenas quando o cursor está posicionado no tipo não associado.

Add using, quick action expanded image

Clique no ícone de lâmpada de erro e, em seguida, escolha using System.Xml; para adicionar automaticamente a diretiva using.

Adicionar diretivas using ausentes quando colar

O IntelliSense pode adicionar automaticamente diretivas ausentes using ao código quando você cola um tipo no arquivo de código. Esse recurso economiza tempo automatizando a tarefa de adicionar ausente usando diretivas ao colar um tipo em um arquivo. Habilite esse recurso noEditor> de Texto deOpções>de Ferramentas>C# (ou Visual Basic) >Avançado e selecione Adicionar ausente usando diretivas na colagem.

Remover e classificar usos

A opção Remover e Classificar Usos classifica e remove as declarações using e extern sem alterar o comportamento do código-fonte. Ao longo do tempo, os arquivos de origem poderão ficar sobrecarregados e ser difíceis de serem lidos devido a diretivas using desnecessárias e desorganizadas. A opção Remover e Classificar Usos compacta o código-fonte ao remover as diretivas using não utilizadas e melhora a legibilidade com sua classificação. No menu Editar, selecione IntelliSense e, depois, selecione Organizar Usos.

Implementar interface

O IntelliSense fornece uma opção para ajudá-lo a implementar uma interface enquanto trabalha no editor de código. Normalmente, para implementar uma interface corretamente, é necessário criar uma declaração de método para cada membro da interface na classe. Usando o IntelliSense, depois de digitar o nome de uma interface em uma declaração de classe, uma lâmpada de Ações Rápidas é exibida. A lâmpada oferece a opção de implementar a interface automaticamente, usando a nomenclatura explícita ou implícita. Na nomenclatura explícita, as declarações de método levam o nome da interface. Na nomenclatura implícita, as declarações de método não indicam a interface à qual pertencem. Um método de interface explicitamente nomeado só pode ser acessado por meio de uma instância de interface, e não por meio de uma instância de classe. Para obter mais informações, consulte a implementação da interface explícita.

A implementação da interface gera o número mínimo de stubs de método necessários para atender à interface. Se uma classe base implementar partes da interface, os stubs não serão regenerados.

Implementar classe base abstrata

O IntelliSense fornece uma opção para ajudá-lo a implementar membros de uma classe base abstrata automaticamente enquanto estiver trabalhando no editor de códigos. Normalmente, para implementar membros de uma classe base abstrata, é necessário criar uma nova definição de método para cada método da classe base abstrata na classe derivada. Usando o IntelliSense, depois de digitar o nome de uma classe base abstrata em uma declaração de classe, uma lâmpada de Ações Rápidas é exibida. A lâmpada oferece a opção de implementar os métodos de classe base automaticamente.

Os stubs de método gerados pelo recurso Implementar Classe Base Abstrata são modelados pelo snippet de código definido no arquivo MethodStub.snippet. Os snippets de código são modificáveis. Para obter mais informações, consulte Passo a passo: Criar um snippet de código.

Gerar com base no uso

O recurso Gerar com Base no Uso permite usar classes e membros antes de defini-los. É possível gerar um stub para qualquer classe, construtor, método, propriedade, campo ou enumeração que você deseja usar, mas que ainda não foi definido. É possível gerar novos tipos e membros sem sair do local atual no código. Isso minimiza a interrupção do fluxo de trabalho.

Um sublinhado vermelho ondulado é exibido em cada identificador indefinido. Ao posicionar o ponteiro do mouse sobre o identificador, uma mensagem de erro é exibida em uma dica de ferramenta. Para exibir as opções apropriadas, é possível usar um dos seguintes procedimentos:

  • Clique no identificador indefinido. Uma lâmpada de erro de Ações Rápidas é exibida abaixo do identificador. Clique na lâmpada de erro.

  • Clique no identificador indefinido e pressione Ctrl+. (Ctrl + ponto).

  • Clique com o botão direito do mouse no identificador indefinido e, em seguida, clique em Ações Rápidas e Refatorações.

As opções exibidas podem incluir as seguintes:

  • Gerar propriedade

  • Gerar campo

  • Gerar método

  • Gerar classe

  • Gerar novo tipo (para uma classe, um struct, uma interface ou enumeração)

Gerar manipuladores de eventos

No editor de códigos, o IntelliSense pode ajudá-lo a vincular métodos (manipuladores de eventos) a campos de evento.

Quando você digita o += operador após um campo de evento em um arquivo .cs , o IntelliSense solicita a você a opção de pressionar a tecla Tab . Isso insere uma nova instância de um delegado que aponta para o método que manipula o evento.

Button Auto Hook Up

Se você pressionar Tab, o IntelliSense concluirá automaticamente a instrução para você e exibirá a referência do manipulador de eventos como texto selecionado no editor de código. Para concluir o vínculo automático de evento, o IntelliSense solicita que você pressione a tecla Guia novamente para criar um stub vazio para o manipulador de eventos.

Generate Event Handler

Observação

Se um novo delegado criado pelo IntelliSense referenciar um manipulador de eventos existente, o IntelliSense comunicará essas informações na dica de ferramenta. Em seguida, você pode modificar essa referência; o texto já está selecionado no editor de códigos. Caso contrário, o vínculo automático de evento será concluído nesse ponto.

Se você pressionar a Guia, o IntelliSense criará um stub de um método com a assinatura correta e colocará o cursor no corpo do manipulador de eventos.

Observação

Use o comando Navegação Regressiva no menu Exibir (Ctrl+-) para retornar à declaração de vínculo de evento.

Confira também