Refatoração Renomear (C#)
Renomear é um recurso de refatoração no Visual Studio integrated development environment (IDE) que fornece uma maneira fácil para renomear identificadores para símbolos de código como variáveis locais, campos, métodos, namespaces, propriedades, e tipos. Renomear pode ser usado para alterar os nomes nos comentários e cadeias de caracteres e modificar as declarações e chamadas de um identificador.
Dica
A o usar o controle do código-fonte para o Visual Studio, obter a versão mais recente de fontes antes de tentar executar uma renomeação de refatoração.
Renomear refatoração está disponível dos seguintes recursos do Visual Studio:
Recurso |
Comportamento de Refatoração no IDE |
---|---|
Editor de códigos |
Em o editor de códigos, renomear refatoração está disponível quando você posicionar o cursor em determinados tipos de símbolos de código. Quando o cursor está em essa posição, você pode invocar o comando de Renomear digitando o atalho de teclado (CTRL + R, CTRL + R), ou selecionando o comando de Renomear de uma marca inteligente, no menu de atalho, ou do menu de Refatorar . |
Modo de Exibição de Classe |
Quando você seleciona um identificador no modo da classe, renomear refatoração está disponível no menu de atalho e do menu de Refatorar . |
Pesquisador de Objetos |
Quando você seleciona um identificador no pesquisador de objetos, renomear refatoração só está disponível no menu de Refatorar . |
Grade de propriedade do windows forms designer |
Em Grade de propriedade do windows forms designer, alterar o nome de um controle iniciará uma operação de renomeação para esse controle. a caixa de diálogo de Renomear não aparecerá. |
Explorer solução |
Em Gerenciador de Soluções, um comando de Renomear está disponível no menu de atalho. Se o arquivo de origem selecionado contém uma classe cujo nome da classe é o mesmo que o nome de arquivo, você pode usar este comando renomear simultaneamente o arquivo de origem e para executar uma renomeação de refatoração. Por exemplo, se você criar um aplicativo baseado no Windows padrão e renomear em Form1.cs a TestForm.cs, o nome do arquivo de origem Form1.cs passará a TestForm.cs e a classe Form1 e todas as referências a aquela classe. a TestForm serão renomeados Dica O comando de Desfazer (CTRL+Z) desfarão somente renomiar refatoração no código e não alterarão o nome do arquivo de volta ao nome original. Se o arquivo de origem selecionado não contém uma classe cujo nome é o mesmo que o nome do arquivo, o comando de Renomear em Gerenciador de Soluções renomeará somente o arquivo de origem e não o executará refatoração renomeia. |
Operações de renomeação
Quando você executa Renomear, o mecanismo de refatoração executa um específico da operação de renomeação para cada símbolo de código, como descrito na tabela a seguir.
Símbolo de código |
Operação de renomeação |
---|---|
Campo |
Altera a declaração e usos do campo para o novo nome. |
Variável local |
Altera a declaração e usos da variável para o novo nome. |
Método |
Altera o nome do método e todas as referências a esse método para o novo nome. Dica Quando você renomear um método de extensão, a operação de renomeação se propaga para todas as instâncias de método que está no escopo, independentemente se o método de extensão está sendo usado como um método estático ou um método de instância.Para mais informações, consulte Métodos de extensão (Guia de Programação em C#). |
Namespace |
Altera o nome do namespace para o novo nome na declaração, em todas as instruções de using , e nomes totalmente qualificados. Dica Para renomear um namespace, Visual Studio também atualiza a propriedade de Namespace Padrão na página de Aplicativo de Designer de projeto.Esta propriedade não pode ser redefinido selecionando Desfazer do menu de Editar .Para limpar o valor de propriedade de Namespace Padrão , você deve alterar a propriedade em Designer de projeto.Para obter mais informações, consulte página de aplicativo. |
Propriedade |
Altera a declaração e usos da propriedade para o novo nome. |
Tipo |
Altere todas as declarações e todos os usos de tipo para o novo nome, incluindo construtores e destructors. Para tipos parciais, a operação de renomeação para todas as partes propagará. |
Para renomear um identificador
Crie um aplicativo de console chamado RenameIdentifier, e em seguida Program substitua com o seguinte exemplo de código.
class ProtoClassA { // Invoke on 'MethodB'. public void MethodB(int i, bool b) { } } class ProtoClassC { void D() { ProtoClassA MyClassA = new ProtoClassA(); // Invoke on 'MethodB'. MyClassA.MethodB(0, false); } }
Coloque o cursor em MethodB, na declaração de método ou na chamada de método.
Em o menu de Refatorar , selecione Renomear. A caixa de diálogo Rename aparece.
Você também pode clicar com o botão direito do mouse no cursor, aponte para Refatorar no menu de contexto, e clique em Renomear para exibir a caixa de diálogo de Renomear .
Em o campo de Novo nome , digite MethodC.
Selecione a caixa de seleção de Pesquise nos comentários .
Clique em OK.
Em a caixa de diálogo de Visualizar Alterações , clique Aplicar.
Para renomear um identificador usando marcas inteligentes
Crie um aplicativo de console chamado RenameIdentifier, e em seguida Program substitua com o seguinte exemplo de código.
class ProtoClassA { // Invoke on 'MethodB'. public void MethodB(int i, bool b) { } } class ProtoClassC { void D() { ProtoClassA MyClassA = new ProtoClassA(); // Invoke on 'MethodB'. MyClassA.MethodB(0, false); } }
Em a declaração para MethodB, digite ou retroceda sobre o identificador do método. Um aviso de marca inteligente será exibido abaixo de esse identificador.
Dica
Você só pode chamar refatoração renomeia usando marcas inteligentes na declaração de um identificador.
Digite o atalho de teclado SHIFT+ALT+F10 e em seguida, pressione SETA PARA BAIXO PARA exibir o menu de marca inteligente.
- ou -
Mova o ponteiro do mouse sobre a mensagem de marca inteligente para exibir a marca inteligente. Então mova o ponteiro do mouse sobre a marca inteligente e em SETA PARA BAIXO para exibir o menu de marca inteligente.
Selecione o item de menu renomear '<identifer1>“a”<identifier2>' para chamar renomiar refatoração sem uma visualização das alterações em seu código. Todas as referências a <identifer1> serão atualizadas automaticamente a <identifier2>.
- ou -
Selecione o item de menu renomear com visualização para chamar renomiar refatoração com uma visualização das alterações em seu código. a caixa de diálogo de Visualizar Alterações aparecerá.
Comentários
Renomeando membros substituídos ou implementados
Quando você Renomear um membro que implementa/substituição ou seja implementado/substituído por membros em outros tipos, Visual Studio exibe uma caixa de diálogo que indica a operação de renomeação irá fazer atualizações em cascata. Se você clicar em Continuar, o mecanismo localiza refatoração recursivamente e renomeie todos os membros nos tipos base e derivado que possuem relações implements/substituições com o membro sendo renomeado.
O exemplo de código contém membros com relações implements/alternativas.
interface IBase
{
void Method();
}
public class Base
{
public void Method()
{ }
public virtual void Method(int i)
{ }
}
public class Derived : Base, IBase
{
public new void Method()
{ }
public override void Method(int i)
{ }
}
public class C : IBase
{
public void Method()
{ }
}
Em o exemplo anterior, renomeando C.Method() também renomeia Ibase.Method() porque C.Method() implementa Ibase.Method(). Em seguida, o mecanismo de refactor recursivamente consulta que Ibase.Method() é implementado por Derived.Method() e renomear Derived.Method(). O mecanismo de refactor não renomeia Base.Method(), porque Derived.Method() não substitui Base.Method(). O mecanismo para refatoração aqui a menos que você tenha renomear sobrecargas fazer o check-in da caixa de diálogo de Renomear .
Se renomear sobrecargas é verificado, o mecanismo de refactor renomeia Derived.Method(int i) como sobrecarrega Derived.Method(), Base.Method(int i) porque é substituído por Derived.Method(int i), e Base.Method() porque é uma sobrecarga de Base.Method(int i).
Dica
Quando você renomeia um membro que é definido em um assembly referenciado, uma caixa de diálogo explica que causará renomear erros de compilação.
Renomeando propriedades de tipos anônimos
Quando você renomear uma propriedade em tipos anônimos, a operação de renomeação propagará a propriedades em outros tipos anônimos que têm as mesmas propriedades. Os exemplos a seguir ilustram esse comportamento.
var a = new { ID = 1};
var b = new { ID = 2};
Em o código acima, renomear ID alterar ID em ambas as instruções porque elas têm o mesmo tipo anônimo subjacente.
var companyIDs =
from c in companylist
select new { ID = c.ID, Name = c.Name};
var orderIDs =
from o in orderlist
select new { ID = o.ID, Item = o.Name};
Em o código acima, renomeando ID renomeará apenas uma instância de ID porque companyIDs e orderIDs não têm as mesmas propriedades.
Consulte também
Referência
Tipos anônimos (Guia de Programação em C#)