Material Design 오픈 소스코드에서 코드에 취소선을 보고 c#에 해당 기능이 있다는 것을 알게 됐다.

 

C#에서 메서드나 속성이 취소선(Strikeout) 으로 표시되는 건 보통 [Obsolete] 특성(Attribute) 이 적용됐을 때이다.

 

1. [Obsolete] 특성

C#에서는 특정 API를 더 이상 쓰지 않도록 권장할 때 ObsoleteAttribute를 붙여.
이 경우 IDE(Visual Studio, Rider 등)에서 취소선으로 표시되고, 컴파일 시 경고 또는 오류를 낼 수 있다.

예시:

 
public class MyClass
{
    [Obsolete("이 메서드는 사용하지 마세요. 대신 Pause()를 사용하세요.")]
    public void Suspend()
    {
        // ...
    }

    public void Pause()
    {
        // 새로운 대체 메서드
    }
}

이렇게 하면 Suspend()를 호출하는 코드가 IDE에서 취소선으로 보이고, 빌드할 때 경고 메시지가 뜸.


2. Obsolete 속성 옵션

 
[Obsolete]  // 단순히 취소선 + 경고
[Obsolete("메시지", false)] // 메시지 + 경고
[Obsolete("메시지", true)]  // 메시지 + 컴파일 오류

 

3. 실제 사례

  • Thread.Suspend() → .NET에서 [Obsolete] 처리되어 있음
    (스레드 강제 중지는 Deadlock, 불안정 문제 유발 가능하기 때문)
  • IDE에서 보면 Suspend()가 취소선 표시되는 이유가 바로 이것 때문이다.

 


C#에서 메서드가 취소선 표시되는 이유는 해당 메서드에 [Obsolete] 특성이 붙어 있기 때문이다.
직접 적용하려면 클래스나 메서드에 [Obsolete]를 붙이면 된다.

+ Recent posts