Condividi tramite


Rinomina

Aggiornamento: novembre 2007

Rinomina è una funzionalità di refactoring presente nell'ambiente di sviluppo integrato (IDE) di Visual Studio che consente rinominare facilmente gli identificatori per i simboli del codice ad esempio campi, variabili locali, metodi, spazi dei nomi, proprietà e tipi. È possibile utilizzare Rinomina per modificare i nomi in commenti e stringhe, oltre alle dichiarazioni e alle chiamate di un identificatore.

Nota:

Quando si utilizza Controllo del codice sorgente per Visual Studio, è opportuno ottenere la versione più recente delle origini prima di eseguire il refactoring di ridenominazione.

Il refactoring di ridenominazione è disponibile tramite le seguenti funzionalità di Visual Studio:

Funzionalità

Comportamento di Refactoring nell'IDE

Editor di codice

Nell'editor del codice il refactoring di ridenominazione è disponibile quando si posiziona il cursore su determinati tipi di simboli di codice. Quando il cursore è in questa posizione, è possibile richiamare il comando Rename digitando il tasto di scelta rapida (CTRL + R, R) o scegliendo il comando Rinomina da uno smart tag, un menu di scelta rapida o dal menu Effettua refactoring. Quando si sceglie il comando Rinomina, verrà visualizzata la finestra di dialogo Rinomina. Per ulteriori informazioni, vedere Finestra di dialogo Rinomina e Procedura: rinominare gli identificatori.

Visualizzazione classi

Quando si seleziona un identificatore in Visualizzazione classi, il refactoring di ridenominazione è disponibile dal menu di scelta rapida e dal menu Effettua refactoring.

Visualizzatore oggetti

Quando si seleziona un identificatore in Visualizzatore oggetti, il refactoring di ridenominazione è disponibile solo dal menu Effettua refactoring.

Griglia delle proprietà di Progettazione Windows Form

Se si modifica il nome di un controllo in Griglia delle proprietà di Progettazione Windows Form, verrà avviata un'operazione di ridenominazione per tale controllo. La finestra di dialogo Rinomina non verrà visualizzata.

Esplora soluzioni

In Esplora soluzioni è disponibile un comando Rinomina nel menu di scelta rapida. Se il file di origine selezionato contiene una classe il cui nome corrisponde al nome del file, è possibile utilizzare questo comando per rinominare il file di origine ed eseguire contemporaneamente il refactoring di ridenominazione.

Se, ad esempio, si crea un'applicazione Windows predefinita, quindi si rinomina Form1.cs in TestForm.cs, il nome del file di origine Form1.cs verrà modificato in TestForm.cs e la classe Form1 e tutti i riferimenti a essa verranno rinominati in TestForm.

Nota:

Il comando Annulla (CTRL+Z) può essere utilizzato solo per annullare il refactoring di ridenominazione all'interno del codice e non per ripristinare il nome originale del file.

Se il file di origine selezionato non contiene una classe il cui nome corrisponde al nome del file, il comando Rinomina in Esplora soluzioni consentirà solo di rinominare il file di origine e non di eseguire il refactoring di ridenominazione.

Operazioni di ridenominazione

Quando si esegue il comando Rinomina, il motore di refactoring effettua un'operazione di ridenominazione specifica per ciascun simbolo di codice descritto nella tabella seguente.

Simbolo di codice

Operazione di ridenominazione

Campo

La dichiarazione e gli utilizzi del campo vengono modificati nel nuovo nome.

Variabile locale

La dichiarazione e gli utilizzi della variabile vengono modificati nel nuovo nome.

Metodo

Il nome del metodo e tutti i riferimenti al metodo vengono modificati nel nuovo nome.

Nota:

Quando si rinomina un metodo di estensione, l'operazione di ridenominazione viene propagata a tutte le istanze del metodo incluse nell'ambito, indipendentemente dal fatto che il metodo di estensione venga utilizzato come un metodo statico o come metodo di un'istanza. Per ulteriori informazioni, vedere Metodi di estensione (Guida per programmatori C#).

Spazio dei nomi

Consente di applicare il nuovo nome allo spazio dei nomi nella dichiarazione, in tutte le istruzioni using e in tutti i nomi completi.

Nota:

Quando si rinomina uno spazio dei nomi, in Visual Studio viene aggiornata anche la proprietà Default Namespace nella pagina dell'applicazionedi Progettazione progetti. Questa proprietà non può essere reimpostata selezionando Annulla dal menu Modifica. Per reimpostare il valore della proprietà Default Namespace, è necessario modificare la proprietà in Progettazione progetti. Per ulteriori informazioni, vedere Pagina dell'applicazione.

Proprietà

La dichiarazione e gli utilizzi della proprietà vengono modificati nel nuovo nome.

Tipo

Consente di applicare il nuovo nome a tutte le dichiarazioni e a tutti gli utilizzi del tipo, inclusi costruttori e distruttori. Per i tipi parziali, l'operazione di ridenominazione viene propagata a tutte le parti.

Note

Ridenominazione di membri implementati o sottoposti a override

Quando si utilizza il comando Rinomina per un membro che esegue l'override o implementa altri membri oppure è sottoposto a override o è implementato da membri in altri tipi, in Visual Studio viene visualizzata una finestra di dialogo in cui è indicato che l'operazione di ridenominazione comporterà l'esecuzione di aggiornamenti a cascata. Se si sceglie Continua, il motore di refactoring cerca e rinomina in modo ricorsivo tutti i membri nei tipi di base e derivati che hanno un rapporto di implementazione/override con il membro rinominato.

Nell'esempio di codice seguente sono inclusi membri con rapporto di implementazione/override.

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()
    { }
}

Nell'esempio precedente la ridenominazione di C.Method() comporta la ridenominazione anche di Ibase.Method() perché C.Method() implementa Ibase.Method(). Quindi, il motore di refactoring rileva in modo ricorsivo che Ibase.Method() è implementato da Derived.Method() e rinomina Derived.Method(). Il motore di refactoring non rinomina Base.Method() perché Derived.Method() non esegue l'override di Base.Method(). Il motore di refactoring si ferma a questo punto, a meno che non sia stata selezionata l'opzione Rinomina overload nella finestra di dialogo Rinomina.

Se Rinomina overload è selezionata, il motore di refactoring rinomina Derived.Method(int i) perché esegue l'overload di Derived.Method(), Base.Method(int i) perché è sottoposto a override da parte di Derived.Method(int i) e Base.Method() perché è un overload di Base.Method(int i).

Nota:

Quando si rinomina un membro definito in un assembly a cui si fa riferimento, una finestra di dialogo informa che l'operazione di ridenominazione causerà errori di compilazione.

Ridenominazione di proprietà di tipi anonimi

Quando si rinomina una proprietà nei tipi anonimi, l'operazione di ridenominazione verrà propagata alle proprietà in altri tipi anonimi con le stesse proprietà. Questo comportamento è illustrato nell'esempio seguente:

var a = new { ID = 1};
var b = new { ID = 2};

Nel codice precedente, la ridenominazione dell'ID comporterà la modifica dell'ID in entrambe le istruzioni perché hanno lo stesso tipo anonimo sottostante.

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};

Nel codice precedente, la ridenominazione di ID comporterà la ridenominazione solo di un'istanza di ID perché companyIDs e orderIDs non hanno le stesse proprietà.

Vedere anche

Attività

Procedura: rinominare gli identificatori

Concetti

Refactoring

Riferimenti

Tipi anonimi (Guida per programmatori C#)

Altre risorse

Controllo del codice sorgente per Visual Studio