[Obsolete] : 더 이상 사용하지 않는 코드라는 경고만 출력한다.

[Obsolete(string message)] : 더 이상 사용하지 않는다는 경고에 추가적인 메시지를 남길 수 있다. 이 메시지를 통해 더 이상 사용하지 않는 코드 대신에 사용할 코드를 사용자에게 알릴 수 있다.

[Obsolete(string message, bool error)] : 추가적인 로그와 함께 이 코드를 사용할 경우에 컴파일 에러를 띄울지를 결정한다. true를 넣어주면 컴파일 에러를 띄워서 이 코드를 사용하면 컴파일을 할 수 없게 된다.

class TestClass
{
    [Obsolete]
    public void Function1()
    {
    }

    [Obsolete("Not use anymore.")]
    public void Function2()
    {
    }

    [Obsolete("Not use anymore.", true)]
    public void Function3()
    {
    }
}

[Obsolete(string message)] 활용 코드

using System;

namespace BasicAttribute
{
    class Myclass
    {
        [Obsolete("BadMethod는 폐기되었습니다. GoodMethod()를 이용하세요")]
        public void BadMethod()
        {
            Console.WriteLine("I'm bad");
        }

        public void GoodMethod()
        {
            Console.WriteLine("I'm good");
        }
    }

    class MainApp
    {
        static void Main(string[] args)
        {
            Myclass obj = new Myclass();
            obj.BadMethod();
            obj.GoodMethod();
        }
    }
}