Renomear Refatoração (C#)
Renomear é um recurso de refatoração do Visual Studio ambiente de desenvolvimento integrado (IDE) que oferece uma maneira fácil para renomear identificadores para os símbolos de código como, por exemplo, campos, variáveis locais, métodos, namespaces, propriedades e tipos. Renomear pode ser usado para alterar os nomes em comentários e cadeias de caracteres e alterar as declarações e chamadas de um identificador.
Observação |
---|
Ao usar o controle de origem para Visual Studio, obtenha a versão mais recente das fontes antes de tentar realizar a refatoração Renomear. |
Refatoração Renomear está disponível nos seguintes recursos de Visual Studio:
Característica |
Comportamento de refatoração no IDE |
---|---|
Editor de códigos |
No Editor de código, refatoração Renomear está disponível quando você posiciona o cursor em determinados tipos de símbolos de código. Quando o cursor está nesta posição, você pode chamar o Renomear comando digitando o atalho de teclado (CTRL + R, R), ou selecionando o Renomear comando a partir de uma marca inteligente, o menu de atalho, ou o Refactor menu. |
Modo de Exibição de Classe |
Quando você seleciona um identificador no modo de exibição de classe, a refatoração Renomear está disponível no menu de atalho e Refactor menu. |
Pesquisador de Objetos |
Quando você seleciona um identificador no Pesquisador de objetos, refatoração Renomear só está disponível a partir de Refactor menu. |
Grade de propriedade do Windows Forms Designer |
No A grade de propriedade do Windows Forms Designer, alterando o nome de um controle iniciará uma operação de renomeação desse controle. O Renomear caixa de diálogo não aparecerá. |
Gerenciador de Soluções |
Em Solution Explorer, um Renomear comando está disponível no menu de atalho. Se o arquivo de origem selecionada contém uma classe cujo nome de classe é igual ao nome de arquivo, você pode usar esse comando para executar a refatoração Renomear e renomeie o arquivo de origem simultaneamente. Por exemplo, se você cria um aplicativo baseado no Windows de padrão e, em seguida, renomeie o Form1. cs para TestForm.cs, o nome do arquivo de origem o Form1 será alterado para TestForm.cs e a classe Form1 e todas as referências a que classe será renomeado para TestForm.
Observação
O Desfazer comando (CTRL + Z) apenas Desfazer refatoração Renomear no código e irá não alterar o nome do arquivo de volta para o nome original.
Se o arquivo de origem selecionado não contém uma classe cujo nome é igual ao nome de arquivo, o Renomear comando na Solution Explorer só irá renomear o arquivo de origem e não será executada a refatoração Renomear. |
Operações de renomeação
Quando você executa Renomear, o mecanismo de refatoração executa um específicos da operação de renomeação de cada símbolo de código, conforme 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.
Observação
Quando você renomeia um método de extensão, a operação de renomeação se propaga para todas as instâncias do método que estão no escopo, independentemente do método de extensão está sendo usado como um método estático ou um método de instância.Para obter mais informações, consulte Métodos de extensão (guia de programação de C#).
|
Namespace |
Altera o nome do namespace para o novo nome na declaração, todos os using e instruções nomes totalmente qualificados.
Observação
Ao renomear um namespace, Visual Studio também atualiza o Namespace padrão propriedade no aplicativo página da Project Designer.Esta propriedade não pode ser redefinida, selecionando Desfazer partir do Editar menu.Para redefinir o Namespace padrão o valor de propriedade, você deve modificar a propriedade no Project Designer.Para obter mais informações, consulte Página de aplicativo.
|
Propriedade |
Altera a declaração e usos da propriedade para o novo nome. |
Tipo |
Altera todas as declarações e todos os usos do tipo para o novo nome, incluindo os construtores e destrutores. Para tipos parciais, a operação de renomeação se propagará para todas as partes. |
Para renomear um identificador
Crie um aplicativo de console chamado RenameIdentifiere em seguida, substitua Program com o código de exemplo a seguir.
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 na MethodB, tanto na declaração de método ou a chamada de método.
Do Refactor menu, selecione Renomear. A caixa de diálogo Rename aparece.
Você também pode digitar o atalho de teclado F2 para exibir o Renomear caixa de diálogo.
Você também pode direito cursor, aponte para Refactor no menu de contexto e, em seguida, clique Renomear para exibir o Renomear caixa de diálogo.
No Nome do novo , digite MethodC.
Selecione o Pesquisar em comentários caixa de seleção.
Clique em OK.
No Visualizar alterações caixa de diálogo, clique em Aplicar.
Para renomear um identificador usando marcas inteligentes
Crie um aplicativo de console chamado RenameIdentifiere em seguida, substitua Program com o código de exemplo a seguir.
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); } }
Na declaração de MethodB, tipo ou backspace sobre o identificador de método. Um prompt de marca inteligente será exibido abaixo esse identificador.
Observação Você só pode chamar usando marcas inteligentes na declaração de um identificador de refatoração Renomear.
Digite o atalho de teclado SHIFT + ALT + F10 e, em seguida, pressione a seta para baixo para exibir o menu de marca inteligente.
- ou -
Mova o ponteiro do mouse sobre o prompt de marca inteligente para exibir a marca inteligente. Em seguida, mova o ponteiro do mouse sobre a marca inteligente e clique na seta para baixo para exibir o menu de marca inteligente.
Selecione o Renomear '<identifer1>' a '<identifier2>' o item de menu para invocar a refatoração Renomear sem uma visualização das alterações em seu código. Todas as referências a <identifer1> será automaticamente atualizado para <identifier2>.
- ou -
Selecione o Renomear com visualização o item de menu para invocar a refatoração Renomear com uma visualização das alterações em seu código. O Visualizar alterações caixa de diálogo será exibida.
Comentários
Renomeando implementado ou membros substituídos
Quando você Renomear um membro que implementa/substituições ou é implementado/substituído pelos membros em outros tipos, Visual Studio exibe uma caixa de diálogo que diz que a operação de renomeação fará com que as atualizações em cascata. Se você clicar em continuar, o refatoração mecanismo recursivamente localiza e renomeia todos os membros na base de dados e tipos derivados que têm implementa/substituições de relações com o membro que está sendo renomeado.
O exemplo de código a seguir contém os membros com relações de implementa/substituições.
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()
{ }
}
No exemplo anterior, renomeando C.Method() também renomeia Ibase.Method() porque C.Method() implementa Ibase.Method(). Em seguida, recursivamente de mecanismo Refatorar vê que Ibase.Method() é implementada pelo Derived.Method() e renomeia Derived.Method(). Não é o mecanismo de refatoração Renomear Base.Method(), pois Derived.Method() não substitui Base.Method(). O mecanismo de refatoração pára, aqui, a menos que tenha Renomear sobrecargas check-in a Renomear caixa de diálogo.
Se Renomear sobrecargas estiver marcada, o mecanismo de refatoração renomeia Derived.Method(int i) porque sobrecarrega Derived.Method(), Base.Method(int i) porque ele é substituído por Derived.Method(int i), e Base.Method() porque é uma sobrecarga de Base.Method(int i).
Observação |
---|
Quando você renomeia um membro que foi definido em um assembly referenciado, uma caixa de diálogo explica que a renomeação causará erros de compilação. |
A renomeação de propriedades de tipos anônimos
Quando você renomeia uma propriedade de tipos anônimos, a operação de renomeação se propagará para propriedades de 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};
No código anterior, renomeando ID irá alterar ID em ambas as instruções porque eles têm a mesma base de tipo anônimo.
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};
No código anterior, renomeando ID renomeará apenas uma instância de ID porque companyIDs e orderIDs não têm propriedades do mesmo.
Consulte também
Referência
Tipos anônimos (guia de programação de C#)