728x90
반응형
// C#의 메서드(Method)와 구조체(Structures)
using System;
class MethodAndStructures
{
// Method
// 메서드(Method)는 일련의 코드 블록으로, 특정한 작업을 수행하기 위해 사용되는 독립적인 기능 단위입니다.
// 메서드는 클래스 내에 구현되어 있어야 하며, 클래스 내에 구현되지 않은 함수는 메서드가 아닙니다.
// 메서드의 역할과 중요성 : 코드의 재사용성, 코드의 중복을 방지, 프로그램의 구조화, 유지보수의 용이성
public static void WhatIsMethod()
{
// 메서드의 구조
// [접근 한정자] [반환형] [메서드명]([매개변수])
// {
// // 메서드의 내용
// }
// 접근 한정자 : 메서드에 접근할 수 있는 범위를 지정합니다. public, private, protected, internal, protected internal, private protected
// 반환형 : 메서드가 반환하는 값의 데이터 형식을 지정합니다. 반환형이 없는 경우 void를 사용합니다.
// 메서드명 : 메서드의 이름을 지정합니다.
// 매개변수 : 메서드를 호출할 때 전달하는 값의 데이터 형식과 이름을 지정합니다.
// 메서드의 내용 : 메서드가 수행할 작업을 구현합니다.
// 메서드의 종류
// 반환형이 있는 메서드 : 메서드가 호출된 곳으로 값을 반환합니다.
// 반환형이 없는 메서드 : 메서드가 호출된 곳으로 값을 반환하지 않습니다.
// 매개변수가 있는 메서드 : 메서드를 호출할 때 전달하는 값을 받아들입니다.
// 예시 1 : 반환 값이 없는 메서드
void PrintHello()
{
Console.WriteLine("Hello, World!");
}
// 예시 2 : 반환 값이 있는 메서드
int Add(int a, int b)
{
return a + b;
}
// 예시 3 : 매개변수가 있는 메서드
void PrintName(string name)
{
Console.WriteLine("Hello, " + name);
}
// 예시 4 : 반환 값과 매개변수가 있는 메서드
int Multiply(int a, int b)
{
return a * b;
}
// 메서드 호출
PrintHello(); // Hello, World!
int sum = Add(3, 5); // 8
PrintName("Alice"); // Hello, Alice
int product = Multiply(3, 5); // 15
}
// 메서드 오버로딩
// 메서드 오버로딩(Method Overloading)은 같은 이름의 메서드를 여러 개 정의하는 것을 의미합니다.
// 메서드 오버로딩은 매개변수의 개수나 데이터 형식을 다르게 하여 같은 이름의 메서드를 여러 개 정의할 수 있습니다.
// 메서드 오버로딩을 사용하면 메서드의 이름을 통일하여 메서드를 호출할 때 편리하게 사용할 수 있습니다.
// 메서드 오버로딩의 조건 : 메서드의 이름은 같아야 하며, 매개변수의 개수나 데이터 형식이 달라야 합니다.
// 메서드 오버로딩의 장점 : 메서드의 이름을 통일하여 메서드를 호출할 때 편리하게 사용할 수 있습니다.
// 메서드 오버로딩의 단점 : 메서드의 이름이 같기 때문에 메서드를 호출할 때 혼란이 발생할 수 있습니다.
// 메서드 오버로딩의 주의사항 : 매개변수의 개수나 데이터 형식이 같은 경우 메서드 오버로딩을 사용할 수 없습니다.
// 메서드 오버로딩의 사용법 : 메서드의 이름은 같고, 매개변수의 개수나 데이터 형식이 다른 메서드를 정의합니다.
// 메서드 오버로딩 예시
void PrintMessage(string message)
{
Console.WriteLine("Message: " + message);
}
void PrintMessage(int number)
{
Console.WriteLine("Number: " + number);
}
// 메서드 호출
// PrintMessage("Hello, World!"); // 문자열 매개변수를 가진 메서드 호출
// PrintMessage(10); // 정수 매개변수를 가진 메서드 호출
// 재귀 호출
// 재귀 호출(Recursion)은 메서드가 자기 자신을 호출하는 것을 의미합니다.
// 재귀 호출은 반복문을 사용하여 구현할 수 있는 작업을 메서드를 사용하여 구현할 때 사용합니다.
// 재귀 호출은 메서드가 자기 자신을 호출하기 때문에 종료 조건을 반드시 지정해야 합니다.
// 재귀 호출은 반복문보다 코드가 간결하고 이해하기 쉽다는 장점이 있습니다.
// 재귀 호출은 메서드가 자기 자신을 호출하기 때문에 메모리 사용량이 더 많을 수 있습니다.
// 재귀 호출의 사용법 : 메서드가 자기 자신을 호출하는 코드를 작성하고, 종료 조건을 반드시 지정합니다.
// 자칫하면 무한 루프에 빠질 수 있으므로 종료 조건을 반드시 지정해야 합니다.
// 메서드 활용 예시
// 팩토리얼 계산
int Factorial(int n)
{
if (n == 0) // 종료 조건
{
return 1;
}
return n * Factorial(n - 1); // 재귀 호출
}
// 메서드 호출
// Factorial(5); // 5! = 120
// 구조체
// 구조체(Structures)는 클래스와 유사한 데이터 형식으로, 데이터를 저장하고 관리하는 데 사용됩니다.
// 구조체는 클래스와 달리 상속, 인터페이스, 생성자, 소멸자를 사용할 수 없습니다.
// 구조체는 값 형식으로, 스택 메모리에 저장되며, 클래스는 참조 형식으로, 힙 메모리에 저장됩니다.
// 구조체는 클래스보다 메모리 사용량이 적고, 성능이 우수하며, 데이터를 빠르게 처리할 수 있습니다.
// 구조체는 데이터 형식을 정의하고, 데이터를 저장하고, 데이터를 처리하는 데 사용됩니다.
// 구조체는 클래스와 달리 new 키워드를 사용하여 인스턴스를 생성하지 않고, 바로 사용할 수 있습니다.
// 구조체는 클래스와 달리 생성자를 사용할 수 없으며, 필드를 초기화할 때 필드 초기화자를 사용합니다.
// 구조체는 클래스와 달리 소멸자를 사용할 수 없으며, 필드를 해제할 때 Dispose 메서드를 사용합니다.
// 구조체는 클래스와 달리 상속을 사용할 수 없으며, 인터페이스를 사용하여 다중 상속을 구현할 수 있습니다.
// 구조체는 클래스와 달리 인터페이스를 사용하여 다형성을 구현할 수 있습니다.
// 구조체의 선언
// struct 키워드를 사용하여 구조체를 선언합니다.
// 구조체의 이름은 대문자로 시작하며, Pascal 표기법을 사용합니다.
// 구조체의 필드는 데이터 형식과 이름으로 구성되며, 필드의 이름은 소문자로 시작합니다.
}728x90
반응형
'C#' 카테고리의 다른 글
| C# 고급 문법과 기능 (0) | 2025.02.20 |
|---|---|
| C# 클래스와 객체 (0) | 2025.02.13 |
| C# 배열과 컬렉션 (1) | 2025.02.10 |
| C# 조건문과 반복문 (0) | 2025.02.10 |
| C# 문자열 처리 (0) | 2025.02.10 |