C#과 Java언어 비교(11) - Attributes

C# and JAVA 2007. 5. 29. 11:26

http://genamics.com/developer/csharp_comparative_part10.htm


15.
어트리뷰트(Attributes)

C# Java 모두 컴파일된 코드 내에는 필드에 대한 접근수준과 같은 정보를 포함한다. C# 이러한 특성을 일반화하여 단순히 여러분이 클래스나 메소드, 필드 혹은 심지어 각각의 파라미터와 같은 요소들에 관하여 사용자가 직접 입력한 정보들도 컴파일할 있다. 이러한 정보들은 런타임시에 검색할 수도 있다. 아래에 어트리뷰터를 이용하는 클래스에 대한 매우 간단한 예제가 나와 있다:

[AuthorAttribute ("Ben Albahari")]
class A
{
    [Localizable(true)]
    public String Text {
        get {return text;
        }
        ...
    }
}

Java /** */ 주석을 결합하여 클래스와 메소드에 관한 추가정보들을 포함시키는데, 그러나 이러한 정보들은 바이트 코드에 내장되지 않는다. C# 미리 정의되어 있는 어트리뷰트인 ObsoleteAttribute 사용하여 컴파일러가 쓸모없는 코드(obsolete code) 대하여 경고할 있도록 하며, 그리고 ConditionalAttribute 사용하여 조건부 컴파일을 가능하게 수도 있다. 마이크로소프트의 새로운 XML 라이브러리는 어트리뷰트를 활용하여 필드가 XML 직렬화되는 방식을 표현하는데, 이는 여러분이 클래스를 쉽게 XML 변환한 다음 다시 그것을 재구성할 수도 있다는 것을 의미한다. 어트리뷰트를 사용하는 다른 적절한 예는 제대로 강력한 클래스 탐색도구를 만드는 것이다. C# 언어 레퍼런스는 어트리뷰트를 만들고 사용하는 방법에 관해 정확하게 기술하고 있다.

: