HaPpY hApPy

4. #if 대신 Conditional Attribute를 사용하라. 본문

.NET/Effective C#

4. #if 대신 Conditional Attribute를 사용하라.

juniguya 2013. 8. 17. 13:38

namespace ConsoleApplication

{

    class Program

    {

        class CStudent

        {

            private string _name;

 

            public CStudent()

            {

                _name = "못생긴 학생";

            }

            public string Name

            {

                get

                {

                    return _name;

                }

                set

                {

                    CheckState();

                    _name = value;

                    CheckState();

                }

            }

               

            [Conditional("DEBUG")]

            public void CheckState()

            {

                Console.WriteLine("대입 하기전 혹은 학생의 이름 {0}",_name);

            }

        }

 

        static void Main(string[] args)

        {

            CStudent student1 = new CStudent();

            student1.Name = "잘생긴 학생";

        }

    }

}

이렇게 하면 DEBUG 할땐 학생 이름이 바뀌기 전후로 보여준다.

하지만 Release 버전에서는 호출되지 않는다.


#if 는 일단 호출이되고나서 안에서 #if 문을 사용해야 하기때문에

아무것도 안하는 함수를 호출해야되는 낭비가 있다.


Conditional 은 사용상 제약이 조금 있다.

1. 메서드에서만 사용가능
2. 반드시 void 형태의 리턴 타입
3. 메서드의 일부 문장에 대해서만 적용 불가능