델리게이트(delegate) - 대리자
/// <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 |
//함수 위에서 /를 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 |