728x90
반응형

C# 어트리뷰트(Attribute)

  • C#에서 [] 괄호 안에 사용하는 것은 "어트리뷰트(Attribute)"라고 부르며, 이는 자바의 어노테이션(Annotation)과 매우 유사한 개념입니다.
  • 어트리뷰트는 코드 요소(클래스, 메서드, 필드 등)에 메타데이터를 추가하여 컴파일러나 런타임에 특별한 동작을 지시하거나 정보를 제공하는 데 사용됩니다.

C#의 어트리뷰트(Attribute)

  • 정의: 어트리뷰트는 코드에 추가적인 메타데이터를 첨부하기 위한 방법입니다.
  • 표기법: 대괄호 [] 안에 어트리뷰트 이름을 작성하여 사용합니다.
  • 용도: 컴파일러 지시, 런타임 행동 변경, 코드 문서화 등 다양한 목적에 사용됩니다.

예시

using System;

[Obsolete("이 클래스는 더 이상 사용되지 않습니다.")]
public class OldClass
{
    // ...
}
  • 위 예시에서 [Obsolete] 어트리뷰트는 해당 클래스가 더 이상 사용되지 않음을 표시하며, 이를 사용하는 개발자에게 경고를 제공합니다.

SerializeField 어트리뷰트

  • 역할: Unity에서 private 또는 protected 필드를 인스펙터에 노출하여 에디터에서 편집할 수 있도록 합니다.
  • 사용 예시:
using UnityEngine;

public class Example : MonoBehaviour
{
    [SerializeField]
    private int health = 100;
}
  • 위 코드에서 health 필드는 private이지만, [SerializeField] 어트리뷰트를 통해 Unity 에디터 인스펙터에서 편집할 수 있게 됩니다.

자바의 어노테이션과의 비교

  • 유사점:

    • 둘 다 메타데이터를 제공하는 방법입니다.
    • 컴파일러나 런타임에서 특정 행동을 지정하거나 정보를 전달하는 데 사용됩니다.
    • 코드의 가독성과 유지보수성을 향상시키는 데 도움을 줍니다.
  • 차이점:

    • 사용 방법과 일부 기능에서 언어적 차이가 있을 수 있습니다.
    • 자바에서는 @ 기호를 사용하여 어노테이션을 표시하며, C#에서는 []를 사용합니다.

자바 어노테이션 예시

public class Example {
    @Deprecated
    public void oldMethod() {
        // ...
    }
}
  • 위 자바 코드에서 @Deprecated 어노테이션은 해당 메서드가 더 이상 사용되지 않음을 나타내며, 이를 사용하는 개발자에게 경고를 제공합니다. 이는 C#의 [Obsolete] 어트리뷰트와 동일한 역할을 합니다.

요약

  • []는 C#에서 어트리뷰트를 표시하는 데 사용됩니다.
  • SerializeField는 Unity에서 필드를 직렬화하고 인스펙터에 노출하기 위한 어트리뷰트입니다.
  • C#의 어트리뷰트와 자바의 어노테이션은 개념적으로 유사하며, 코드에 메타데이터를 추가하는 역할을 합니다.
728x90
반응형

+ Recent posts