Share via


관례에서 생성

관례에서 생성 기능을 사용하면 클래스와 멤버를 정의하기 전에도 사용할 수 있습니다. 아직 정의하지는 않았지만 사용하려는 클래스, 생성자, 메서드, 속성, 필드 또는 열거형에 대해 스텁을 생성할 수 있습니다. 코드에서 현재 위치를 벗어나지 않고 새 형식과 멤버를 생성할 수 있습니다. 이렇게 하면 워크플로 중단이 최소화됩니다.

관례에서 생성 기능은 테스트 우선 개발과 같은 프로그래밍 스타일을 지원합니다.

관례에서 생성 사용(C#)

정의되지 않은 각 식별자 아래에 물결선이 표시됩니다. 식별자 위로 마우스 포인터를 가져가면 도구 설명에 오류 메시지가 표시됩니다.

적합한 옵션을 표시하기 위해 다음 절차 중 하나를 사용할 수 있습니다.

  • 정의되지 않은 식별자를 클릭합니다. 그러면 맨 왼쪽 문자 아래에 짧은 밑줄이 표시됩니다. 짧은 밑줄 위로 마우스 포인터를 가져가면 스마트 태그(작은 아이콘)가 표시됩니다. 스마트 태그를 클릭합니다.

  • 정의되지 않은 식별자를 클릭한 다음 Ctrl+.(마침표)를 누릅니다.

  • 정의되지 않은 식별자를 마우스 오른쪽 단추로 클릭한 다음 생성을 클릭합니다.

표시되는 옵션에는 다음이 포함될 수 있습니다.

  • 속성 스텁 생성

  • 필드 스텁 생성

  • 메서드 스텁 생성

  • 클래스 생성

  • 새 형식 생성(클래스, 구조체, 인터페이스 또는 열거형)

관례에서 생성 사용(Visual Basic)

정의되지 않은 각 식별자 아래에 물결선이 표시되고 맨 오른쪽 문자 아래에 짧은 밑줄이 표시됩니다. 식별자 위로 마우스 포인터를 가져가면 도구 설명에 오류 메시지가 표시됩니다.

적합한 옵션을 표시하기 위해 다음 절차 중 하나를 사용할 수 있습니다.

  • 마우스 포인터를 정의되지 않은 식별자 위에 놓습니다. 스마트 태그(아이콘)이 나타납니다. 스마트 태그를 클릭합니다.

  • 정의되지 않은 식별자를 클릭한 다음 Ctrl+.(마침표)를 누릅니다.

  • 오류 목록 창에서 해당하는 오류 행을 두 번 클릭합니다.

표시되는 옵션에는 다음이 포함될 수 있습니다.

  • 속성 스텁 생성

  • 필드 스텁 생성

  • 메서드 스텁 생성

  • 클래스 생성

  • 인터페이스 생성

  • 새 형식 생성(클래스, 구조체, 인터페이스, 열거형 대리자 또는 모듈)

속성 스텁 생성

코드에서 정의되지 않은 속성을 참조하는 경우 속성 스텁 생성을 클릭합니다. 적절한 클래스에 속성 스텁이 생성됩니다. 속성의 반환 유형은 컨텍스트에 따라 결정됩니다.

예를 들어 다음과 같은 코드의 문에서 InstanceProperty 속성을 생성하려고 합니다.

Dim cust As New Customer()
Dim city As String = cust.InstanceProperty
Customer cust = new Customer();
string city = cust.InstanceProperty;

속성을 생성하면 다음과 같은 스텁이 Customer 클래스에 만들어집니다.

Property InstanceProperty() As String
public string InstanceProperty { get; set; }

속성이 인스턴스가 아닌 형식으로 호출된 경우 생성된 스텁은 정적 속성(C#) 또는 공유 속성(Visual Basic)이 됩니다.

예를 들어 다음과 같은 문에서 속성을 생성한다고 가정합니다(Customer가 클래스 이름이라고 가정).

Dim description As String = Customer.SharedProperty
string description = Customer.StaticProperty;

속성을 생성하면 다음과 같은 스텁이 Customer 클래스에 만들어집니다.

Shared Property SharedProperty As String
public static string StaticProperty { get; set; }

현재 형식의 멤버를 참조하는 한정 없이 속성을 호출하는 경우 속성이 정적 메서드에서 호출되면 생성된 스텁은 정적 속성입니다. 그렇지 않으면 인스턴스 속성입니다.

예를 들어 다음과 같은 문에서 속성을 생성한다고 가정합니다.

Dim title As String = UnqualifiedProperty
string title = UnqualifiedProperty;

속성을 생성하면 다음과 같은 스텁이 현재 클래스에 만들어집니다.

Private Property UnqualifiedProperty() As String
public string UnqualifiedProperty { get; set; }

메서드 스텁 생성

코드에서 정의되지 않은 메서드를 참조하는 경우 메서드 스텁 생성을 클릭합니다. 적절한 클래스에 메서드 스텁이 생성됩니다.

각 매개 변수의 형식과 반환 유형은 컨텍스트에 따라 결정됩니다. 익명 형식 또는 암시적으로 형식화된 지역 변수(var 키워드로 정의된 변수) 같이 형식을 유추할 수 없을 경우에는 해당 개체 형식이 사용됩니다.

각 매개 변수 이름은 메서드 호출로 전달되는 인수 이름을 통해 파생됩니다.

예를 들어 다음과 같은 코드의 문에서 InstanceMethod 메서드를 생성한다고 가정합니다.

Dim cust As New Customer()
Dim itemNumber = 3
Dim itemName = "abc"
cust.InstanceMethod(itemNumber, itemName, 4)
Customer cust = new Customer();
int itemNumber = 3;
string itemName = "abc";
cust.InstanceMethod(itemNumber, itemName, 4);

메서드를 생성하면 다음과 같은 스텁이 해당 클래스에 만들어집니다.

Sub InstanceMethod(ByVal itemNumber As Integer, ByVal itemName As String, ByVal p3 As Integer)
    Throw New NotImplementedException
End Sub
internal void InstanceMethod(int itemNumber, string itemName, int p)
{
    throw new NotImplementedException();
}

메서드가 인스턴스가 아닌 형식으로 호출된 경우 생성된 스텁은 정적 메서드(C#) 또는 공유 메서드(Visual Basic)가 됩니다.

이벤트에 대한 메서드 스텁 생성

Visual Basic의 경우 AddHandler 문 또는 RemoveHandler 문에서 참조되는 이벤트에 대한 이벤트 처리기 메서드를 생성할 수 있습니다.

예를 들어 다음과 같은 코드의 문 중 하나에서 EventHandler 메서드를 생성한다고 가정합니다.

AddHandler obj.Ev_Event, AddressOf EventHandler
RemoveHandler obj.Ev_Event, AddressOf EventHandler

메서드를 생성하면 다음과 같은 스텁이 현재 클래스에 만들어집니다.

Private Sub EventHandler()
    Throw New NotImplementedException
End Sub

생성자 스텁 생성

코드에서 정의되지 않은 생성자를 참조하는 경우 생성자 스텁 생성을 클릭합니다. 적절한 클래스에 생성자 스텁이 생성됩니다. 각 매개 변수의 형식은 컨텍스트에 따라 결정됩니다.

생성자의 매개 변수 이름이 검사됩니다. 이러한 매개 변수 이름과 일치하는 이름을 가진 속성이 클래스에 있으면 해당 속성의 인수 값을 저장하기 위한 코드가 생성자에 제공됩니다.

예를 들어 다음과 같은 코드의 문에서 Example 클래스의 생성자를 생성한다고 가정합니다.

Dim total As Long = 12
Dim exampleTest As New Example(5, total, Date.Now)
long total = 12;
Example exampleTest = new Example(5, total, System.DateTime.Now);

생성자를 생성할 때 다음과 같은 private 변수가 아직 없으면 Example 클래스에 만들어집니다.

Private _p1 As Integer
Private _total As Long
Private _p3 As Date
private int p;
private long total;
private DateTime dateTime;

다음 생성자 스텁이 만들어집니다.

Sub New(ByVal p1 As Integer, ByVal total As Long, ByVal p3 As Date)
    ' TODO: Complete member initialization 
    _p1 = p1
    _total = total
    _p3 = p3
End Sub
public Example(int p, long total, DateTime dateTime)
{
    // TODO: Complete member initialization
    this.p = p;
    this.total = total;
    this.dateTime = dateTime;
}

한 클래스에서 둘 이상의 생성자를 생성할 수 있습니다. 생성자 호출의 인수 수가 다르거나 인수 형식이 다를 경우 추가 생성자를 생성할 수 있습니다.

Visual Basic의 경우 클래스를 생성할 때 생성자를 생성할 수도 있습니다. 자세한 내용은 이 항목에 나오는 다음 단원을 참조하십시오.

클래스 생성

코드에서 정의되지 않은 클래스 또는 다른 형식을 참조하는 경우에는 클래스 생성새 형식 생성 중에서 선택할 수 있습니다.

클래스 생성을 클릭하면 프로젝트의 새 파일에 빈 클래스 스텁이 생성됩니다. 코드 편집기에서 새 파일이 열립니다(포커스가 지정되지 않음). 이는 현재 프로젝트의 새 파일에서 기본 액세스 한정자를 가진 새 클래스 형식을 가장 빨리 만들 수 있는 방법입니다.

예를 들어 다음과 같은 문에서 클래스를 생성한다고 가정합니다.

Dim cust As Customer
Customer cust;

클래스를 생성하면 프로젝트의 새 파일에 다음과 같은 새 클래스 스텁이 생성됩니다.

Class Customer

End Class
namespace CSharpWindowsApp
{
    class Customer
    {
    }
}

상속된 기본 클래스가 클래스 정의에 정의되지 않은 경우에는 클래스 생성 명령을 사용할 수도 있습니다.

생성자와 함께 클래스 생성

Visual Basic의 경우 생성된 클래스에 생성자가 포함됩니다(해당하는 경우).

예를 들어 다음과 같은 문에서 클래스를 생성한다고 가정합니다.

Dim total = 3
Dim exampleTest As New Example(5, total, Date.Now) With {.Description = "book"}

클래스를 생성하면 프로젝트의 새 파일에 다음과 같은 새 클래스 스텁이 생성됩니다. 클래스에 생성자 스텁이 생성됩니다. 이전 코드의 With 절에 있는 개체 이니셜라이저에 대한 Description 속성이 만들어집니다.

Class Example
    Private _p3 As Date
    Private _total As Integer
    Private _p1 As Integer

    Sub New(ByVal p1 As Integer, ByVal total As Integer, ByVal p3 As Date)
        ' TODO: Complete member initialization 
        _p1 = p1
        _total = total
        _p3 = p3
    End Sub

    Property Description As String
End Class

추가 옵션이 있는 새 형식 생성

코드에서 정의되지 않은 클래스, 인터페이스, 열거형 또는 구조체(C# 및 Visual Basic)를 참조하는 경우에는 클래스 생성새 형식 생성 중에서 선택할 수 있습니다. 다음 그림에서는 이를 보여 줍니다.

Visual Basic

Visual Basic의 스마트 태그 상황에 맞는 메뉴

Visual C#

C#의 스마트 태그 상황에 맞는 메뉴

새 형식 생성을 클릭하여 새 형식 생성 대화 상자를 엽니다. 이 대화 상자에서는 액세스 수준, 형식 종류, 프로젝트 위치 및 파일 이름을 선택할 수 있습니다.

새 형식 생성 옵션을 사용하면 클래스를 생성할 때 유연한 작업이 가능합니다. 기존 파일에 클래스를 넣거나, 액세스 한정자를 지정하거나, 솔루션의 다른 프로젝트에 새 파일을 추가할 수 있습니다.

다음 그림에서는 새 형식 생성 대화 상자를 보여 줍니다.

새 형식 생성 대화 상자

새 형식 생성 대화 상자

다음 표에서는 새 형식 생성 대화 상자의 선택 항목을 보여 줍니다.

옵션

C#의 선택 항목

Visual Basic의 선택 항목

액세스

Default, public, internal 또는 private

default, friend 또는 public

종류

클래스, 구조체, 인터페이스 또는 열거형

클래스, 구조체, 인터페이스, 열거형, 대리자 또는 모듈

프로젝트 위치

솔루션에 있는 현재 프로젝트 또는 다른 프로젝트

솔루션에 있는 현재 프로젝트 또는 다른 프로젝트

파일 이름

파일 이름으로 새 파일 만들기 또는 파일 이름으로 기존 파일에 추가

파일 이름으로 새 파일 만들기 또는 파일 이름으로 기존 파일에 추가

형식이 새 파일에서 생성되는 경우 새 항목 추가 대화 상자에서 생성한 클래스에 대한 기본 using 지시문 집합이 새 파일에 포함됩니다.

형식이 솔루션의 다른 프로젝트에서 생성되는 경우 해당 프로젝트를 참조하는 using 지시문이 현재 파일에 추가됩니다.

인터페이스 스텁 생성

정의되지 않은 인터페이스에서 코드를 생성하려면 새 형식 생성을 클릭합니다. 새 형식 생성 대화 상자가 열립니다. 종류 목록에서 인터페이스를 클릭합니다. Visual Basic의 경우 인터페이스 생성을 클릭할 수도 있습니다.

예를 들어 다음과 같은 코드의 문에서 IAuto 인터페이스를 생성한다고 가정합니다.

Public Class Sedan : Implements IAuto
End Class
public class Sedan : IAuto
{
}

인터페이스를 생성하면 다음과 같은 스텁이 만들어집니다.

Interface IAuto

End Interface
interface IAuto
{
}

대리자 스텁 생성

Visual Basic에서 정의되지 않은 대리자의 코드를 생성하려면 새 형식 생성을 클릭합니다. 새 형식 생성 대화 상자가 열립니다. 종류 목록에서 대리자를 클릭합니다.

예를 들어 다음과 같은 코드의 문에서 MathOperator 대리자를 생성한다고 가정합니다.

Dim delInstance As New MathOperator(AddressOf AddNumbers)

대리자를 생성하면 다음과 같은 스텁이 만들어집니다.

Delegate Sub MathOperator()

IntelliSense 제안 모드

IntelliSense에서는 문 완성을 위해 두 가지 방법을 제공하며 그 중 하나는 완성 모드이고 다른 하나는 제안 모드입니다. 제안 모드는 클래스와 멤버를 정의하기 전에 사용하는 경우에 사용됩니다.

IntelliSense 제안 모드에서 코드 편집기에 입력하고 항목을 커밋하면 입력한 텍스트가 해당 코드에 삽입됩니다. IntelliSense 완성 모드에서 항목을 커밋하면 멤버 목록의 선택된 항목이 해당 코드에 삽입됩니다.

IntelliSense 창이 열려 있으면 Ctrl+Alt+스페이스바를 눌러 완성 모드와 제안 모드 간을 전환할 수 있습니다.

자세한 내용은 멤버 목록을 참조하십시오.

참고 항목

작업

연습: 관례에서 생성 기능을 통한 테스트 우선 지원

기타 리소스

코딩 지원

자동 코드 생성