
특정한 작업을 수행하기 위해 사용되는 독립적인 기능 단위로, 코드의 재사용성과 모듈화를 위해 사용되며, 필요할 때 호출하여 실행된다.
메서드의 역할과 중요성
코드의 재사용성: 동일한 작업을 여러 번 코딩할 필요 없이 필요할 때마다 해당 메서드를 호출하여 작업을 수행할 수 있다.
모듈화: 메서드를 통해 코드를 작고 관리하기 쉬운 단위로 분할하면 전체 코드 구조가 명확해지고 이해하기 쉬워진다.
가독성과 유지보수성: 코드를 간결하게 만들어 가독성을 높이며, 문제 발생 시 해당 메서드만 수정함으로써 유지보수를 용이하게 한다.
코드의 중복 제거: 반복적인 작업을 한 곳에 묶어 코드 내의 중복을 줄임으로써 오류 가능성을 감소시키고 코드의 효율성을 향상시킨다.
코드의 추상화: 작업 단위를 추상화하여, 메서드의 이름만으로도 그 기능을 쉽게 파악할 수 있게 하며, 이는 코드의 의도와 구조를 명확히 전달하는 데 도움을 준다.
Unity에서 함수와 메서드
함수와 메서드라는 용어는 Unity 개발에서 종종 같은 의미로 사용됩니다. 그러나 C#에서는 함수를 클래스에 통합하지 않고는 함수를 작성할 수 없으므로 "메서드"가 올바른 용어입니다.참고: https://unity.com/how-to/naming-and-code-style-tips-c-scripting-unity
[접근 제한자] [리턴 타입] [메서드 이름]([매개변수])
{
// 메서드 실행 코드
}
접근제한자: 주로 public, private, protected 등을 사용하며, 메서드에 접근할 수 있는 범위를 지정한다.
리턴 타입: 메서드가 반환하는 값의 데이터 타입을 지정하며, 반환 값이 없을 경우 void를 사용한다.
메서드 이름: 메서드를 호출하기 위해 사용하는 이름으로, 메서드는 특정 기능/동작을 수행하기 때문에 주로 동사를 사용하며, PascalCase로 작성한다.
매개변수: 메서드에 전달되는 값으로, 필요한 경우 0개 이상의 매개변수를 정의할 수 있다.
// 반환 값이 없는 메서드
public void SayHello()
{
Console.WriteLine("안녕하세요!");
}
// 매개변수가 있는 메서드
public void GreetPerson(string name)
{
Console.WriteLine("안녕하세요, " + name + "님!");
}
// 반환 값이 있는 메서드
public int AddNumbers(int a, int b)
{
int sum = a + b;
return sum;
}
[메서드 이름]([전달할 매개변수]);
메서드 이름과 필요한 매개변수를 전달하여 호출하며, 해당 메서드의 코드를 실행하고, 필요한 경우 리턴 값이 있다면 반환한다.
호출 시 전달되는 매개변수는 메서드의 매개변수와 순서, 타입이 일치해야 한다.
void PrintFullName(string firstName, string lastName)
{
Console.WriteLine("Full Name: " + firstName + " " + lastName);
}
// 메서드 호출
PrintFullName("John", "Doe");
int AddNumbers(int a, int b)
{
int sum = a + b;
return sum;
}
// 메서드 호출 및 반환값 사용
int result = AddNumbers(10, 20);
Console.WriteLine("Sum: " + result);
void PrintMessage(string message)
{
Console.WriteLine("Message: " + message);
}
// 메서드 호출
PrintMessage("Hello, World!");
// 문자열 매개변수를 가진 메서드
void PrintMessage(string message)
{
Console.WriteLine("Message: " + message);
}
// 정수 매개변수를 가진 메서드
void PrintMessage(int number)
{
Console.WriteLine("Number: " + number);
}
// 두 개의 매개변수를 가진 메서드
int AddNumbers(int a, int b)
{
return a + b;
}
// 세 개의 매개변수를 가진 메서드
int AddNumbers(int a, int b, int c)
{
return a + b + c;
}
// 메서드 호출
PrintMessage("Hello, World!");
PrintMessage(10);
int sum1 = AddNumbers(10, 20);
int sum2 = AddNumbers(10, 20, 30);
재귀 호출은 메서드가 자신을 다시 호출하는 것을 의미하며, 호출 스택에 호출된 메서드의 정보를 순차적으로 쌓고, 메서드가 반환되면서 순차적으로 제거되는 방식으로 동작한다.
복잡한 문제를 단순화하여 해결할 수 있지만, 명확한 종료 조건을 설정하지 않으면 스택 오버플로우를 일으킬 수 있으며, 메모리 사용과 실행 속도 측면에서 비효율적일 수 있어 신중하게 사용해야 한다.
void CountDown(int n)
{
if (n <= 0) // 재귀 호출 종료 조건
{
Console.WriteLine("Done");
}
else
{
Console.WriteLine(n);
CountDown(n - 1); // 자기 자신을 호출
}
}
// 메서드 호출
CountDown(5);