C#과 Java언어 비교(11) - Attributes
C# and JAVA 2007. 5. 29. 11:26http://genamics.com/developer/csharp_comparative_part10.htm
15. 어트리뷰트(Attributes)
C#과 Java 둘 모두 컴파일된 코드 내에는 필드에 대한 접근수준과 같은 정보를 포함한다. C#은 이러한 특성을 일반화하여 단순히 여러분이 클래스나 메소드, 필드 혹은 심지어 각각의 파라미터와 같은 요소들에 관하여 사용자가 직접 입력한 정보들도 컴파일할 수 있다. 이러한 정보들은 런타임시에 검색할 수도 있다. 아래에 어트리뷰터를 이용하는 클래스에 대한 매우 간단한 예제가 나와 있다:
class A
{
[Localizable(true)]
public String Text {
get {return text;
}
...
}
}
Java는 /** */와 주석을 결합하여 클래스와 메소드에 관한 추가정보들을 포함시키는데, 그러나 이러한 정보들은 바이트 코드에 내장되지 않는다. C#은 미리 정의되어 있는 어트리뷰트인 ObsoleteAttribute를 사용하여 컴파일러가 쓸모없는 코드(obsolete code)에 대하여 경고할 수 있도록 하며, 그리고 ConditionalAttribute를 사용하여 조건부 컴파일을 가능하게 할 수도 있다. 마이크로소프트의 새로운 XML 라이브러리는 어트리뷰트를 활용하여 필드가 XML로 직렬화되는 방식을 표현하는데, 이는 여러분이 클래스를 쉽게 XML로 변환한 다음 다시 그것을 재구성할 수도 있다는 것을 의미한다. 어트리뷰트를 사용하는 또 다른 적절한 예는 제대로 강력한 클래스 탐색도구를 만드는 것이다. C# 언어 레퍼런스는 어트리뷰트를 만들고 사용하는 방법에 관해 정확하게 기술하고 있다.