특성 사용(C# 프로그래밍 가이드)

업데이트: 2007년 11월

일부 특성은 유효한 선언 형식을 제한할 수 있지만 거의 대부분의 선언에 특성을 배치할 수 있습니다. 특성을 구문에 지정하려면 적용할 엔터티의 선언 앞에 특성 이름을 대괄호로 묶습니다. 예를 들어, DllImport 특성이 있는 메서드는 다음과 같이 선언합니다.

[System.Runtime.InteropServices.DllImport("user32.dll")]
extern static void SampleMethod();

자세한 내용은 DllImportAttribute 클래스를 참조하십시오.

대부분의 특성은 매개 변수를 가지며, 사용되는 매개 변수에는 positional, unnamed 또는 named가 있습니다. 모든 positional 매개 변수는 일정한 순서로 지정되고 생략할 수 없지만, named 매개 변수는 순서에 관계없이 지정되고 생략할 수도 있습니다. positional 매개 변수는 가장 먼저 지정됩니다. 예를 들어, 다음 3개의 특성은 동일합니다.

[DllImport("user32.dll")]
[DllImport("user32.dll", SetLastError=false, ExactSpelling=false)]
[DllImport("user32.dll", ExactSpelling=false, SetLastError=false)]

DLL 이름인 첫째 매개 변수는 positional이므로 항상 처음에 위치합니다. 그 외의 다른 매개 변수는 named입니다. 이 경우 named 매개 변수는 모두 false로 기본 설정되므로 이를 생략할 수 있습니다. 기본 매개 변수 값에 대한 자세한 내용은 각 특성과 관련된 설명서를 참조하십시오.

다음과 같이 별도의 대괄호를 사용하거나 하나의 대괄호 집합을 사용하여 선언 시 두 개 이상의 특성을 배치할 수 있습니다.

void MethodA([In][Out] ref double x) { }
void MethodB([Out][In] ref double x) { }
void MethodC([In, Out] ref double x) { }

일부 특성은 지정한 엔터티에 두 번 이상 지정할 수 있습니다. Conditional은 그러한 다중 사용 특성의 예입니다.

[Conditional("DEBUG"), Conditional("TEST1")]
void TraceMethod()
{
    // ...
}
참고:

규칙에 따라 .NET Framework에서는 특성을 다른 항목과 구분하기 위해 모든 특성 이름 끝에 "Attribute"를 붙입니다. 그러나 코드에서 특성을 사용할 때는 접미사 attribute를 지정할 필요가 없습니다. 예를 들어, [DllImport]는 [DllImportAttribute]와 같지만 .NET Framework에서 이 특성의 실제 이름은 DllImportAttribute입니다.

참고 항목

개념

C# 프로그래밍 가이드

참조

리플렉션(C# 프로그래밍 가이드)

특성(C# 프로그래밍 가이드)

특성 대상 구체화(C# 프로그래밍 가이드)

사용자 지정 특성 만들기(C# 프로그래밍 가이드)

리플렉션을 사용하여 특성 액세스(C# 프로그래밍 가이드)

Attribute

System.Reflection