1. 메소드란?
- 정의: 특정 작업을 수행하는 일련의 코드를 하나의 이름으로 묶은 것.
- 다양한 언어에서의 표현:
- C++: 함수 (Function)
- 파스칼: 프로시저 (Procedure)
- 비주얼 베이직: 서브 루틴 (Subroutine)
2. 메소드 선언 형식
한정자 반환형식 메소드이름(매개변수)
- 한정자: 메소드의 속성 정의 (예: public, static).
- 반환형식: 메소드가 반환하는 데이터의 형식.
- 메소드 이름: 호출 시 사용할 이름.
- 매개변수: 메소드 실행에 필요한 입력값.
예시:
public int Add(int a, int b)
{
return a + b;
}
3. return 키워드
- 프로그램의 흐름을 호출자로 되돌립니다.
- 반환형식이 존재할 경우 반환값과 반환형식이 일치해야 합니다.
예시 (재귀 호출):
public int Fibonacci(int n)
{
if (n < 2)
return n;
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
4. 매개변수 전달 방식
a. 값에 의한 전달
- 매개변수로 데이터를 복사하여 전달.
public void Swap(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
int x = 3, y = 4;
Swap(x, y);
Console.WriteLine($"{x}, {y}"); // 결과: 3, 4 (값이 변경되지 않음)
b. 참조에 의한 전달 (ref)
- 매개변수를 참조하여 원본 데이터를 변경.
public void Swap(ref int a, ref int b)
{
int temp = a;
a = b;
b = temp;
}
int x = 3, y = 4;
Swap(ref x, ref y);
Console.WriteLine($"{x}, {y}"); // 결과: 4, 3
c. 출력 전용 매개변수 (out)
- 메소드에서 결과를 출력하는 용도로 사용.
public void Divide(int a, int b, out int quotient, out int remainder)
{
quotient = a / b;
remainder = a % b;
}
int quotient, remainder;
Divide(10, 3, out quotient, out remainder);
Console.WriteLine($"Quotient: {quotient}, Remainder: {remainder}");
5. 메소드 오버로딩
- 같은 이름의 메소드를 매개변수의 타입, 개수로 구분하여 여러 개 정의.
public int Add(int a, int b)
{
return a + b;
}
public double Add(double a, double b)
{
return a + b;
}
6. 가변 길이 매개변수 (params)
- 개수가 유동적인 매개변수를 받을 때 사용.
public int Sum(params int[] numbers)
{
int sum = 0;
foreach (int num in numbers)
sum += num;
return sum;
}
int result = Sum(1, 2, 3, 4);
Console.WriteLine(result); // 출력: 10
7. 명명된 매개변수
- 매개변수 이름을 명시적으로 지정하여 호출.
public void PrintInfo(string name, int age)
{
Console.WriteLine($"Name: {name}, Age: {age}");
}
PrintInfo(age: 30, name: "Alice");
8. 선택적 매개변수
- 기본값을 제공하여 필요에 따라 값을 전달하지 않을 수 있음.
public void PrintMessage(string message = "Hello, World!")
{
Console.WriteLine(message);
}
PrintMessage(); // 출력: Hello, World!
PrintMessage("Hi!"); // 출력: Hi!
9. 로컬 함수
- 메소드 내부에 정의된 함수로, 해당 메소드에서만 사용 가능.
public void Calculate()
{
int counter = 0;
void LocalFunction(int a, int b)
{
counter++;
Console.WriteLine($"{a} + {b} = {a + b}, Counter: {counter}");
}
LocalFunction(1, 2);
LocalFunction(3, 4);
}
정리
- 메소드는 코드를 재사용하고 모듈화하기 위한 핵심 도구.
- 다양한 매개변수 전달 방식 (ref, out, params)과 유연한 호출 방식을 제공.
- 로컬 함수와 메소드 오버로딩으로 코드의 가독성과 효율성을 높일 수 있음.
'프로그래밍 언어 및 개발 도구 > c#' 카테고리의 다른 글
연산자 정리: 기초부터 고급까지 알아야 할 모든 것 (0) | 2024.12.14 |
---|---|
데이터 형식 변환: 정수, 부동소수점, 문자와 숫자의 변환 이해하기 (0) | 2024.12.14 |
클래스: 객체 지향 프로그래밍의 핵심 (0) | 2024.12.13 |
객체와 다형성: 클래스, 구조체, 확장 메소드, 튜플까지 (2) | 2024.12.13 |
접근 한정자와 메소드 반환 형식의 이해 (0) | 2024.12.13 |