특성 사용(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입니다. |