C#

C# 메서드(Method)와 구조체(Structures)

anvil925 2025. 2. 11. 20:57
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