[Unity C#] 메소드

YongSeok·2022년 7월 9일
0

📌 메소드 개요

  • 객체 지향 프로그래밍 언어에서 사용되는 용어
  • 유사한 용어 (사용하는 언어에 따라 다르게 부르기도 한다)
    • 함수(Function)
    • 서브루틴 (SubRoutine)
    • 프로시져 (Procedure)
    • 서브 프로그램 (SubProgram)

✏️ 메소드란?

  • "방법"이라는 뜻으로 객체의 일을 처리하는 방법을 정의
  • 일련의 코드를 하나의 이름 아래 묶은 것
  • 묶어 놓은 코드는 메소드의 이름을 불러 내부 코드들을 실행할 수 있다
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{
    public int Add(int num1, int num2)
    {
        int result = num1 + num2;
        return result;
    }

    public void Multiple(int num1, int num2)
    {
        int result = num1 * num2;
        Debug.Log($"{num1} x {num2} = {result}");
    }
}

☝ Add() 메소드처럼 반환형식이 있을 수도 있지만 Multiple처럼 외부로 내보내는 반환형식이 없을 수도 있다 이때는 반환형식을 작성하는 자리에 void 키워드를 사용한다


✏️ 메소드의 장점

  • 일련의 코드를 묶어 두고, 이름을 불러 내부 코드를 실행하기 때문에 동일한 내용의 코드를 반복해서 작성하는 수고가 적어진다
    ☝ 메소드를 사용하지 않은 코드와 메소드를 사용한 코드
    (메소드를 호출하는 자리에 메소드 내부의 내용이 대신 들어간다고 생각하면 된다)

✏️ Return

  • return이 호출되면 메소드를 종료, 프로그램의 흐름을 호출자에게 돌려준다
  • 메소드 내부에서 변환된 특정 데이터를 반환하는 용도로 사용
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{
    private void Awake()
    {
        int a = Max(10, 20);        // 반환되는 데이터와 동일한 타입의 변수를 만들어
                                    // 메소드가 호출되는 외부에서 값을 받을 수 있다.
        Debug.Log(Max(100, 200));   // 변수를 만들지 않고 바로 사용해도 된다
        Max(5, 10);                 // 반환되는 값이 필요 없으면 받지 않아도 된다
    }

    public int Max(int num1, int num2)
    {
        if ( num1 > num2 )
        {
            return num1;            // numn1이 더 클 경우 num1 값을 함수 외부로 반환
        }
        return num2;                // 조건을 만족하지 않는 경우 num2 값을 함수 외부로 반환
    }
}

👇 반환 데이터가 없는 경우

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{
    private void Awake()
    {
        Divide(10, 0);
    }
    public void Divide(int num1, int num2)
    {
        if ( num2 == 0 )
        {
            Debug.Log("나누려는 값이 0이기 때문에 프로그램 종료");
            return;
        }

        float result = num1 / num2;
        Debug.Log($"{num1}/{num2} = {result}");
    }
}

num2 의 값이 0일 경우 return을 만나 그 아래의 코드는 실행하지 않고, return에서 메소드를 빠져나간다


✏️ 매개변수

  • 메소드 내부에서 사용하는 지역 변수
  • 메소드 외부에서 내부로 데이터 전달을 위해 사용
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{
    private void Awake()
    {
        int a = 3;
        int b = 4;
        Add(a, b);
    }

    public void Add(int num1, int num2)
    {
        int result = num1 + num2;
        Debug.Log($"{num1} + {num2} = {result}");
    }
    // 매개변수 num1, num2 는 Add함수 내부에서만 생존한다
}

  • 매개변수가 없으면 단순히 같은 내용의 코드를 반복 재생하는 정도이다
  • 매개변수가 있으면 메소드 내부에서 연산 되는 결과가 다양하게 변화한다

0개의 댓글