[C#] 메서드와 구조체

장민제·2025년 4월 14일

C# Study

목록 보기
5/11
post-thumbnail

메서드 (Method) ?

  • 일련의 코드 블록으로, 특정한 작업을 수행하기 위해 사용되는 독립적인 기능 단위
  • 코드의 재사용성모듈화를 위해 사용, 필요할 때 호출하여 실행

🔑 메서드의 역할과 중요성

  1. 코드의 재사용성
    -> 동일한 작업을 반복해서 구현하지 않아도 된다.
  2. 모듈화
    -> 코드를 작은 단위로 분리하고 관리. 각 메서드는 특정한 기능을 수행하므로 코드의 구조가 더욱 명확해진다.
  3. 가독성과 유지보수성
    -> 코드가 간결해지고 가독성이 좋아진다. 코드 수정이 필요한 경우에는 해당 메서드만 수정하면 되므로 유지보수에 용이하다.

💡 메서드의 선언과 호출

항목설명
반환형메서드가 돌려주는 값의 자료형 (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 

⚠️ 주의할 점

  • 종료 조건이 반드시 있어야한다. (무한하게 재귀 호출이 될 수 있음 = 스택 오버플로우)
  • 호출이 많아지면 메모리 사용량 증가
  • 너무 깊은 호출은 스택 오버플로우 발생 위험

🧱 구조체 (Struct) ?

  • 값 형식(Value Type) 사용자 정의 자료형
  • 관련 있는 데이터를 하나로 묶어 표현 가능
// 구조체 정의
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

구조체를 사용하는 이유

  • 여러 속성을 하나로 묶어 직관적이고 간결한 코드 작성
  • 값 타입으로 힙 대신 스택에 저장, 메모리 사용이 효율적
  • 클래스보다 간단한 구조로 빠르게 정의 가능
  • 코드 가독성을 높임
profile
Unity, C#

0개의 댓글