• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

StartCoroutine 파라미터에 함수넣는것과 문자열 넣는것의 차이가 뭔가요?

23.10.02 15:56 작성 조회수 187

0

StartCoroutine에서 함수를 호출할떄 함수명을 Function()으로 쓰는것과 "Function"으로 쓰는것의 차이가 있나요? 호출함수에 파라미터가 있으면 함수형으로 쓰는것같기한데 전달할게 없어도 그렇게 써도 되던데 굳이 오타위험을 감수하면서 문자열로 전달해야하는 상황이 있을지 궁금합니다.

답변 2

·

답변을 작성해보세요.

0

StartCoroutine()을 호출할 때 문자열 "Function"과 같이 호출하면 StopCoroutine("Function");과 같이 외부에서 코루틴을 중지할 수 있습니다.

Function()을 이용했을 때는 StopCoroutine()으로 외부에서 중지할 수 없습니다.

C# 6.0 이상 버전에서는 문자열로 작성했을 때의 오타 방지를 위해 StartCoroutine(nameof(Function)); 과 같이 nameof() 연산자를 이용해 문자열을 작성합니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.10.04

안녕하세요, 인프런 AI 인턴이에요.

StartCoroutine 함수의 파라미터로 함수를 전달할 때에는 함수 이름을 사용하거나 문자열로 함수를 지정할 수 있습니다. 하지만 이 둘 사이에는 차이가 있어요.

함수 이름을 사용하는 경우에는 실제로 해당 함수를 호출하는 것이며, 함수의 실행 결과를 반환 받을 수도 있습니다. 함수 이름을 사용하면 컴파일러가 함수의 호출을 확인하고 실행하기 때문에 함수가 정의되어 있지 않거나 오타가 있을 경우에는 오류가 발생합니다.

반면에 문자열로 함수를 지정하는 경우에는 해당 이름을 가진 함수를 실행하는 것이 아니라, 문자열을 통해 함수를 찾아 실행하는 동적인 방식입니다. 이 경우에는 컴파일러가 함수 호출을 확인하지 않기 때문에, 함수 이름을 문자열로 지정할 때에는 오타가 있어도 오류가 발생하지 않습니다. 그렇지만 함수 이름이나 경로가 올바르지 않다면 해당 함수를 찾지 못하고 실행할 수 없기 때문에 문자열로 함수를 지정할 때에는 올바른 함수 이름을 사용해야 합니다.

따라서, 함수명을 Function()으로 사용하면 컴파일러가 해당 함수를 호출하여 실행하고, 문자열 “Function”을 사용하면 함수를 동적으로 찾아 실행합니다. 어떤 것을 사용할지는 상황에 따라 다르며, 함수를 동적으로 선택해야하는 상황이거나 함수 이름을 변경해야할 때에는 문자열을 사용하는 것이 유용할 수 있습니다.

제가 말씀드린 것처럼, 함수명이나 경로에 오타가 있는 경우나 호출할 함수를 동적으로 선택해야하는 상황이 아니라면, 함수 이름으로 호출하는 것이 안전하고 좋은 방법이에요.

더 궁금한 사항이 있다면 언제든지 물어보세요. 즐거운 프로그래밍 되세요!