| 항목 | 설명 |
|---|---|
| 반환형 | 메서드가 돌려주는 값의 자료형 (void는 반환 없음) |
| 매개변수 | 메서드 호출 시 넘겨주는 값들 |
| 접근제한자 | public, private 등 접근 가능 범위 지정 |
| 오버로딩 | 같은 이름의 메서드를 매개변수 다르게 여러 개 정의 가능 |
// 기본 구조
[접근제한자] 반환형 메서드이름(매개변수)
{
// 수행할 코드
return 반환값;
}
// 두 개의 int 형 매개변수를 받아 더한 값을 리턴하는 메서드
public int AddNumber(int a, int b)
{
return a + b;
}
int num = AddNumber(5, 3);
Console.WriteLine(num);
>>> 8
int Factorial(int n)
{
if(n == 1) // 종료 조건
return 1;
return n * Factorial(n - 1); // 재귀 호출
}
int fac = Factorial(5);
Console.WriteLine(fac);
>>> 120
⚠️ 주의할 점
- 종료 조건이 반드시 있어야한다. (무한하게 재귀 호출이 될 수 있음 = 스택 오버플로우)
- 호출이 많아지면 메모리 사용량 증가
- 너무 깊은 호출은 스택 오버플로우 발생 위험
// 구조체 정의
public struct Player
{
public string name; // Player 이름
public int level; // Player 레벨
// 플레이어의 이름과 레벨 출력
public void PrintPlayerInfo()
{
Console.WriteLine($"이름: {name}, 레벨: {level}");
}
}
Player p; // 구조체 변수 선언
// 구조체 멤버에 접근하여 사용
p.name = "Jang";
p.level = 13;
p.PrintPlayerInfo();
>>> 이름: Jang, 레벨: 13
✅ 구조체를 사용하는 이유
- 여러 속성을 하나로 묶어 직관적이고 간결한 코드 작성
- 값 타입으로 힙 대신 스택에 저장, 메모리 사용이 효율적
- 클래스보다 간단한 구조로 빠르게 정의 가능
- 코드 가독성을 높임