이름 바꾸기

업데이트: 2007년 11월

이름 바꾸기는 필드, 지역 변수, 메서드, 네임스페이스, 속성, 형식 등의 코드 기호에 대한 식별자의 이름을 간편하게 바꾸는 방법을 제공해 주는 Visual Studio IDE(통합 개발 환경)의 리팩터링 기능입니다. 이름 바꾸기는 식별자 선언과 호출 및 주석과 문자열에서 이름을 변경하는 데 사용될 수 있습니다.

참고:

Visual Studio 소스 제어를 사용하는 경우 이름 바꾸기 리팩터링을 실행하기 전에 소스의 최신 버전을 가져옵니다.

이름 바꾸기 리팩터링은 다음과 같은 Visual Studio 기능에서 사용될 수 있습니다.

기능

IDE에서 리팩터링의 동작

코드 편집기

코드 편집기에서 커서를 특정 형식의 코드 기호 위에 놓으면 이름 바꾸기 리팩터링을 사용할 수 있습니다. 커서가 이 위치에 있으면 바로 가기 키(Ctrl+R, R)를 입력하거나 스마트 태그, 바로 가기 메뉴 또는 리팩터링 메뉴에서 이름 바꾸기 명령을 선택하여 이름 바꾸기 명령을 호출할 수 있습니다. 이름 바꾸기 명령을 호출하면 이름 바꾸기 대화 상자가 나타납니다. 자세한 내용은 이름 바꾸기 대화 상자방법: 식별자 이름 바꾸기를 참조하십시오.

클래스 뷰

클래스 뷰에서 식별자를 선택하면 바로 가기 메뉴와 리팩터링 메뉴에서 이름 바꾸기 리팩터링을 사용할 수 있습니다.

개체 브라우저

개체 브라우저에서 식별자를 선택하면 리팩터링 메뉴에서만 이름 바꾸기 리팩터링을 사용할 수 있습니다.

Windows Forms 디자이너의 속성 표

Windows Forms 디자이너의 속성 표에서 컨트롤의 이름을 변경하면 이 컨트롤에 대한 이름 바꾸기 작업이 시작됩니다. 이름 바꾸기 대화 상자는 나타나지 않습니다.

솔루션 탐색기

솔루션 탐색기에서 이름 바꾸기 명령은 바로 가기 메뉴에서 사용될 수 있습니다. 선택한 소스 파일에 클래스 이름이 파일 이름과 같은 클래스가 있는 경우 이 명령을 사용하여 동시에 소스 파일 이름을 바꾸면서 이름 바꾸기 리팩터링을 실행할 수 있습니다.

예를 들어 기본 Windows 응용 프로그램을 만든 다음 Form1.cs를 TestForm.cs로 이름을 바꾸면 소스 파일 이름 Form1.cs는 TestForm.cs로 변경되고 Form1 클래스와 이 클래스에 대한 모든 참조는 TestForm으로 이름이 바뀝니다.

참고:

실행 취소 명령(Ctrl+Z)은 코드에서만 이름 바꾸기 리팩터링을 취소하고 파일 이름을 다시 원래 이름으로 변경하지는 않습니다.

선택한 소스 파일에 해당 이름이 파일 이름과 같은 클래스가 포함되어 있지 않으면 솔루션 탐색기의 이름 바꾸기 명령은 소스 파일 이름만 바꾸고 이름 바꾸기 리팩터링은 실행하지 않습니다.

이름 바꾸기 작업

이름 바꾸기를 실행하면 리팩터링 엔진은 다음 표의 설명대로 각 코드 기호와 관련된 이름 바꾸기 작업을 수행합니다.

코드 기호

이름 바꾸기 작업

필드

필드의 선언과 사용을 새 이름으로 변경합니다.

지역 변수

변수의 선언과 사용을 새 이름으로 변경합니다.

메서드

메서드의 이름과 이 메서드에 대한 모든 참조를 새 이름으로 변경합니다.

참고:

확장 메서드의 이름을 바꾸는 경우 확장 메서드가 정적 메서드 또는 인스턴스 메서드로 사용되는지 여부와 관계 없이 이름 바꾸기 작업은 범위에 속한 메서드의 모든 인스턴스에 적용됩니다. 자세한 내용은 확장 메서드(C# 프로그래밍 가이드)를 참조하십시오.

네임스페이스

선언에 있는 네임스페이스의 이름을 새 이름으로 변경하고 모든 using 문과 정규화된 이름을 새 이름으로 변경합니다.

참고:

네임스페이스의 이름을 바꾸면 Visual Studio의 프로젝트 디자이너에서 응용 프로그램 페이지에 있는 기본 네임스페이스 속성도 업데이트됩니다. 편집 메뉴에서 실행 취소를 선택하는 방법으로는 이 속성을 다시 설정할 수 없습니다. 기본 네임스페이스 속성 값을 다시 설정하려면 프로젝트 디자이너에서 해당 속성을 수정해야 합니다. 자세한 내용은 Application Page를 참조하십시오.

속성

속성의 선언과 사용을 새 이름으로 변경합니다.

형식

생성자와 소멸자를 포함하여 형식의 모든 선언과 모든 사용을 새 이름으로 변경합니다. 부분 형식(Partial type)의 경우 이름 바꾸기 작업은 모든 부분으로 전파됩니다.

설명

구현되거나 재정의된 멤버의 이름 바꾸기

멤버가 다른 멤버를 재정의/구현하거나 다른 형식의 멤버가 이 멤버를 재정의/구현하는 경우 이름 바꾸기를 수행하면 Visual Studio에서 이름 바꾸기 작업의 결과로 모두 업데이트되었음을 알리는 대화 상자가 표시됩니다. 계속을 클릭하면 리팩터링 엔진에서 이름이 바뀌는 멤버와 구현/재정의 관계가 있는 기본 및 파생 형식의 모든 멤버를 재귀적으로 찾아 이름을 바꿉니다.

다음 코드 예제에는 구현/재정의 관계가 있는 멤버가 들어 있습니다.

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

위 예제에서 C.Method()는 Ibase.Method()를 구현하므로 C.Method()의 이름을 바꾸면 Ibase.Method()의 이름도 바뀝니다. 그런 다음 리팩터링 엔진에서 Ibase.Method()가 Derived.Method()를 통해 구현되는 것을 재귀적으로 확인하고 Derived.Method()의 이름을 바꿉니다. 이때 Derived.Method()는 Base.Method()를 재정의하지 않으므로 Base.Method()의 이름은 바뀌지 않습니다. 이름 바꾸기 대화 상자에서 오버로드 이름 바꾸기를 선택하지 않은 경우에는 리팩터링 엔진이 여기에서 멈춥니다.

오버로드 이름 바꾸기를 선택한 경우에는 리팩터링 엔진에서 Derived.Method()를 오버로드하는 Derived.Method(int i), Derived.Method(int i)를 통해 재정의되는 Base.Method(int i) 및 Base.Method(int i)의 오버로드인 Base.Method()의 이름을 바꿉니다.

참고:

참조된 어셈블리에 정의되어 있는 멤버의 이름을 바꾸면 이름 바꾸기의 결과로 빌드 오류가 발생한다는 대화 상자가 표시됩니다.

익명 형식의 속성 이름 바꾸기

익명 형식의 속성 이름을 바꾸는 경우 이름 바꾸기 작업은 같은 속성을 지닌 다른 익명 형식의 속성으로 전파됩니다. 다음 예제는 이 동작을 보여 줍니다.

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

앞의 코드에서 두 문의 내부 익명 형식이 같으므로 ID의 이름을 바꿀 때 두 문의 ID가 변경됩니다.

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

위의 코드에서 companyIDs 및 orderIDs가 같은 속성을 지니지 않으므로 ID 이름 바꾸기 작업은 ID의 인스턴스의 이름만 바꿉니다.

참고 항목

작업

방법: 식별자 이름 바꾸기

개념

리팩터링

참조

익명 형식(C# 프로그래밍 가이드)

기타 리소스

Visual Studio 소스 제어