jm_p_op

c# - 함수의 반복 실행(function in function 재귀형식,while/case-dictionary...등등,delegate) 본문

C#

c# - 함수의 반복 실행(function in function 재귀형식,while/case-dictionary...등등,delegate)

jm_p_op 2023. 8. 28. 00:18

input값이 잘못되었을 때(자신의 함수를 써서 다시 input값 받기),

혹은 다음 게임 씬으로 넘어갈때 많은 사람들이 재귀형식으로 설계를 한다.

function 안에 function을 사용하면 직관적으로 보이지만, 이는 html로 비유하자면 창을 안닫고 계속 창을 여는것이다.

void Recursive()
{
check_input = Console.WriteLine();
if (잘못된 입력)
	{
    Recursive();
	}

}

함수를 마친후 계속 다음 함수를 실행 시키는 방법이다.

  • 전역변수를 통하여 해당 함수를 실행
  • WhileFunction을 통해 함수를 계속 실행 시킨다
  • DoFunction을 통해 전역 변수에 따른 함수를 실행

이때 꼭 switch뿐만 아니라 dictionary if 등등 다양한 방법으로 실행 시키면 된다.

//전역변수
public class global
{
    public static int do_something=1;
}
//계속 돌리는 함수
void WhileFunction()
{
    do {
        DoFunction(global.do_something);
    }
    while (true);
}

//변수에 따라 실행되는 함수로 보내주는 함수
void DoFunction(int do_something)
{ 
    switch (do_something)
    {
        case 1:
            DoFunction1();
            break;
        case 2:
                    DoFunction2();
                    break;


    }
}
//변수에 따라 실행되는 함수, 변수 바꿔주기
void DoFunction1()
{
    global.do_something=2;
}

void DoFunction2()
{

}

delegate를 활용한다면 해당 함수를 바로 실행시킬수 있다.

단점으론 변수가 고정된다는것!

//전역변수
public class global
{
    public static MyDelegate del;
}
//첫함수후 B로 바꾸기
 public static void MethodA(string msg)
{
    Console.WriteLine("param of methodA : " + msg);
	global.del=MethodB;
}
 public static void MethodB(string msg)
{
    Console.WriteLine("param of MethodB : " + msg);
}

ABBBB....
void WhileFunction()
{
	global.del=MethodA;
    do {
        global.del("1");
    }
    while (true);
}

'C#' 카테고리의 다른 글

c# - Delegate(test)  (0) 2023.08.24
char 값 비교 (ascii)  (0) 2023.07.21