midas+son의 크리에이티브(creative) 이야기


        /// <summary>

        /// 델리게이트(대리자) 선언

        /// </summary>

        delegate void Work();

        delegate void Work11(int num);


   static void Work_01()

        {

            Console.WriteLine("주문 받겠습니다.");

        }

        static void Work_02()

        {

            Console.WriteLine("계산 하겠습니다.");

        }

        static void Work_03()

        {

            Console.WriteLine("기다려주세요.");

        }

        static void Work_04()

        {

            Console.WriteLine("벨이 울림.");

        }

        static void Work_05(int i)

        {

            Console.WriteLine("테스트 용. {0}", i);

        }


   //메인 함수

        static void Main(string[] args)

        {

            //델리게이트 사용

            Work myWork = new Work(Work_01);    //0

            myWork += new Work(Work_02);//1

            myWork += new Work(Work_03);//2

            myWork += new Work(Work_04);//3

            myWork += new Work(Work_02); //4


            myWork();

            myWork -= new Work(Work_02); //뒤에꺼부터 없어짐 - 4가 없어짐

            myWork();


            //myWork += new Work(Work_05);  //인수가 달라서 안됨

            //인자가 있는 델리게이트 사용. 델리게이트로 동일한 형태의 인자와 리턴이 있어야 함

            Work11 myWork11 = new Work11(Work_05);

            myWork11(222);

        }

'공부 > C#' 카테고리의 다른 글

Console 커서 포지션(CursorPosition)  (0) 2016.05.08
class - is , as  (0) 2016.05.08
함수 주석 ///  (0) 2016.05.08
상속 가상 함수 선언  (0) 2016.05.08
상속 protected 접근  (0) 2016.05.08

함수 주석 ///

공부/C#2016. 5. 8. 21:35

//함수 위에서 /를 3번 입력하면 아래와 같이 자동으로 주석 공간이 생성된다.

//받는 인자값이 있거나 return값이 있으면 각각 xml형태로 주석 공간이 생성된다.


        /// <summary>

        /// 테스트 1번

        /// </summary>

        static void Test1()

        {

            Console.WriteLine("Hello Function1");

        }


        /// <summary>

        /// 함수 위에 /// (/ 세 번)해주면 인스턴스, 리턴에 따라 xml형식으로 주석 공간이 자동으로 생긴다.

        /// </summary>

        /// <param name="i">int값을 받아 사용</param>

        /// <param name="f">float값을 받아 사용. 이유 쏼라쏼라~</param>

        static void Test2(int i, float f)

        {

            Console.WriteLine("Test2 : {0} {1}", i, f);

        }


        /// <summary>

        /// 숫자를 받아와 1증가 시키는 함수

        /// </summary>

        /// <param name="num">받아올 수</param>

        /// <returns>1증가시키고 반환</returns>

        static int Test3(int num)

        {

            return ++num;

        }

'공부 > C#' 카테고리의 다른 글

class - is , as  (0) 2016.05.08
델리게이트(delegate) - 대리자  (0) 2016.05.08
상속 가상 함수 선언  (0) 2016.05.08
상속 protected 접근  (0) 2016.05.08
상속 정의  (0) 2016.05.06


//상속 가상 함수 선언

class Unit

{

public virtual void Test()    // virtual public void Test() 도 가능

{

Console.WriteLine("유닛이다.");

}

}

//virtual 선언시 주의 사항 : 

//1. private로 만들 수 없다. 접근 자체가 불가하므로 컴파일이 안됨.

//2. static으로도 만들 수 없다. 객체의 상속 관계에서 적용되는 것인다. 메모리 계속 유지되어있는 static은 재정의 할 수 없다.



//위처럼 선언된 가상 함수는 상속받은 클래스가 오버라이드(재정의) 할수 있다.

class Gunner: Unit

{

public override void Test()    // override public void Test() 도 가능

{

Console.WriteLine("거너롤세.");

}

}

//또 이를 상속받은 클래스가 다시 재정의 할 수도 있다.

class Mechanic : Gunner

{

public override void Test()    // override public void Test() 도 가능

{

Console.WriteLine("메카닉이야.");

}

}


/*

====================================

만약 재정의 하려는 의도가 아니라 

새로운 함수를 추가한 것임을 알리기 위해서는

new를 명시적으로 적어주면 된다.

====================================
*/

class Mechanic : Gunner

{

new public void Test()    // public new void Test() 도 가능

{

}

}

/*
====================================

*/


'공부 > C#' 카테고리의 다른 글

델리게이트(delegate) - 대리자  (0) 2016.05.08
함수 주석 ///  (0) 2016.05.08
상속 protected 접근  (0) 2016.05.08
상속 정의  (0) 2016.05.06
class 변수 선언 - get, set  (0) 2016.05.06