달나라 노트

C# : method 본문

C#/C#

C# : method

CosmosProject 2022. 3. 23. 15:10
728x90
반응형

 

 

 

C#은 객체지향 프로그래밍 언어이기때문에 내가 원하는 기능들이나 정보들을 모아서 class를 만들 수 있습니다.

 

이 class에 담는 정보 중에서 단순히 어떤 값이 아니라 어떤 기능을 하도록 만든 것을 method라고 합니다.

 

아래 예시를 봅시다.

 

using System;

class MyProgram
{
    static void test_method()
    {
        Console.WriteLine("This is test method.");
    }

    static void Main()
    {
        test_method();
    }
}


-- Result
This is test method.

위 예시에서는 test_method라는 이름의 method를 생성하였습니다.

그리고 test_method가 선언된 위치를 잘 보시면 class MyProgram { ~~ } 내부에서 선언되고 있습니다.

따라서 test_method가 속한 class는 MyProgram class입니다.

 

test_method는 This is test method.라는 글자를 출력해주는 기능을 담고 있습니다.

 

그리고 Main 부분에서 test_method()를 호출하고있죠.

 

그 결과를 보면 텍스트가 제대로 출력된 것을 볼 수 있습니다.

 

자세한 구문은 다르지만 마치 Python에서 함수를 선언하듯이 원하는 method를 선언하고 호출할 수 있습니다.

 

static void test_method()

method 선언에 사용된 키워드는 static과 void가 있습니다.

 

static -> static의 의미는 test_method가 MyProgram이라는 class에 속해있다는 의미입니다.

 

void -> 이 method가 return하는 값이 없다는 의미입니다.

만약 method가 정수(int)를 return한다면 int를 적어주면 됩니다.

만약 method가 실수(double)를 return한다면 double을 적어주면 됩니다.

 

 

 

 

 

 

 

using System;

class MyProgram
{
    static void my_sum(int a, int b)
    {
        Console.WriteLine(a + b);
    }

    static void Main()
    {
        my_sum(1, 2);
    }
}


-- Result
3

위 예시는 my_sum이라는 method를 선언합니다.

그리고 my_sum method는 정수로 된 2개의 인자(parameter)를 받습니다.

 

이렇게 받은 인자를 더해서 출력합니다.

 

my_sum(1, 2);

호출할 때에도 정수 2개를 인자로서 전달합니다.

 

 

 

 

 

using System;

class MyProgram
{
    static int my_sum(int a, int b)
    {
        return a + b;
    }

    static void Main()
    {
        int result = my_sum(1, 2);

        Console.WriteLine(result);
    }
}


-- Result
3

이번에는 my_sum method가 어떤 값을 출력하는게 아닌 어떤 값을 return하도록 조절했습니다.

 

정수 a와 정수 b를 받아서 그 합을 return하기 때문에 정수(int)를 return한다는 의미에서 method 선언 부분의 void를 int로 변경했습니다.

 

 

 

 

 

 

using System;

class MyProgram
{
    static int my_sum(int a = 1, int b = 2)
    {
        return a + b;
    }

    static void Main()
    {
        int result1 = my_sum();
        Console.WriteLine(result1);

        int result2 = my_sum(10, 20);
        Console.WriteLine(result2);
    }
}


-- Result
3
30

위 예시는 my_sum method 선언 시 받을 2개의 인자의 기본값을 준 것입니다.

 

static int my_sum(int a = 1, int b = 2)

a의 기본값은 1이고 b의 기본값은 2입니다.

 

만약 my_sum method호출 시 인자가 주어지지 않는다면 설정된 기본값을 가지고 method가 실행됩니다.

 

 

 

 

 

 

 

 

using System;

class MyProgram
{
    static int my_sum(int a, int b)
    {
        return a + b;
    }

    static double my_sum(double a, double b)
    {
        return a + b;
    }

    static void Main()
    {
        int result1 = my_sum(10, 20);
        Console.WriteLine(result1);

        double result2 = my_sum(10.5, 3.83);
        Console.WriteLine(result2);
    }
}


-- Result
30
14.33

위 예시를 보면 sum이라는 똑같은 이름의 함수를 두 번 선언했습니다.

 

하나는 int a, int b의 정수 인자들을 받아 정수를 return하는 sum 함수이고

다른 하나는 double a, double b의 실수 인자들을 받아 실수를 return하는 함수입니다.

 

이렇게 인수의 자료형만 다르고 전달받는 인수의 개수가 동일하며 이름이 동일한 함수를 여러 개 선언하면

이 함수는 다양한 자료형을 받을 수 있는 하나의 함수처럼 작동하게 됩니다.

 

이것을 함수의 오버로드(overload)라고 합니다.

 

 

 

 

 

 

728x90
반응형
Comments