특성은 프로그램을 설명하는 추가 메타데이터로 프로그램 요소를 장식하는 C# 언어 요소입니다. 그런 다음 이 메타데이터는 다양한 용도로 런타임 또는 디자인 시간과 같은 여러 위치에서 평가됩니다. 이 단원에서는 사용되지 않는 코드에 대한 컴파일 타임 경고를 생성하는 데 사용하던 사용 방법을 보여 주어 있습니다. DllImportAttributeattribute를 적용하여 위치 및 명명된 매개 변수를 특성에 적용하는 방법을 확인할 수 있습니다. 특성은 대상 설명자가 있는 다양한 유형의 프로그램 요소를 장식하는 데 사용할 수도 있습니다. 이 예제는 CLSCompliantAttribute 특성을 전체 어셈블리에 적용했습니다. 그러나 범위를 제한하기 위해 적용 가능한 대상 설명자가 있는 다른 프로그램 요소에도 적용되었을 수 있습니다. 첫 번째 예제에서는 필요한 명명된 매개 변수만 적용된 특성을 보여 주며 두 번째 예제에서는 필수 매개 변수와 선택적 매개 변수 모두에 적용된 특성을 보여 주며, 두 번째 예제에서는 명명된 매개 변수를 정의하거나 특성에 저장된 값을 쉽게 반환할 수 있는 방법을 제공하려면 속성을 선언합니다. 특성 속성은 반환될 데이터 형식에 대한 설명이 있는 공용 엔터티로 선언되어야 합니다.
속성 값을 보유할 변수를 정의하고 get 및 set 메서드와 연결합니다. 다음 코드 예제에서는 특성에 간단한 속성을 구현하는 방법을 보여 줍니다. 새 사용자 지정 특성은 System.Attribute 클래스에서 파생되어야 합니다. 예를 들어 특성은 프로그램에 선언적 정보를 추가할 수 있는 요소입니다. 이 선언적 정보는 런타임 동안 다양한 용도로 사용되며 응용 프로그램 개발 도구에서 디자인 타임에 사용할 수 있습니다. 예를 들어 프로그램이 Win32 라이브러리와 통신할 수 있도록 하는 DllImportAttribute와 같은 특성이 있습니다. 또 다른 특성인 ObsoleteAttribute는 컴파일 타임 경고가 표시되어 개발자가 메서드를 더 이상 사용하지 않아야 한다는 것을 알려줍니다. Windows 양식 응용 프로그램을 빌드할 때 시각적 구성 요소를 시각적 양식 빌더에 끌어서 삭제하고 해당 정보가 속성 표에 표시되도록 하는 몇 가지 특성이 있습니다.
또한 .NET 어셈블리를 보호하는 데도 특성이 광범위하게 사용되므로 미리 정의된 보안 제약 조건에 대해 호출 코드를 평가해야 합니다. 다음은 C# 프로그램에서 특성이 사용되는 방법에 대한 몇 가지 설명일 뿐입니다. AttributeUsageAttribute.Inherited 속성은 특성이 적용되는 클래스에서 파생된 클래스에서 특성을 상속받을 수 있는지 여부를 나타냅니다. 이 속성은 true(기본값) 또는 false 플래그를 사용합니다. 다음 예제에서 MyAttribute는 기본 상속된 true 값을 가지며 YourAttribute에는 false의 상속된 값이 있습니다. 사용자 지정 특성 선언은 특성 클래스의 몇 가지 주요 특성을 정의하는 System.AttributeUsageAttribute로 시작합니다. 예를 들어 특성을 다른 클래스에서 상속할 수 있는지 지정하거나 특성을 적용할 수 있는 요소를 지정할 수 있습니다.