2 분 소요

1.메소드(Method)

메소드는 특정 작업을 처리하기 위한 코드 블럭이다. 메소드는 클래스나 인터페이스, 구조체 등에서 정의되며 이를 호출하여 사용한다.

메소드는 다음 아래와 같이 선언이 된다.

access_modifier return_type Method_name(Parameter_type parameter_name){

  '''
  return result; 
}
  1. access_modifier: 이는 접근 한정자로서, “public, private, protected” 등이 있다. 이는 해당 메소드에 접근할 수 있는 권한을 설정한다.
  2. return_type: return type은 반환 형식으로 함수 실행이 완료된 후, 특정 결과를 반환하기 위한 데이터 형식을 정의한다. >만약 반환 값이 없다면, void형으로 정의한다.
  3. Method_name: 메소드 이름을 지정한다.
  4. Parameter_type: 타 함수에서 받을 매개 변수의 타입을 지정한다.
  5. parameter-name: 매개 변수의 이름을 지정한다.
  6. return: return은 함수 실행을 마치고 반환 데이터(result)를 지정한다.
public class MethodEX{
  public static void Hello(string name){
    Console.WriteLine(name + "님의 방문을 환영합니다!"};
  }

  public static void Main(string[] args){
    string name = "단지";
    Hello(name);
  }
}

1-1 Static 키워드

static 키워드는 기본적으로 해당 멤버가 인스턴스에 속하지 않고 클래스 자체에 속하는 것을 의미한다.
따라서, static이 붙은 필드, 프로퍼티, 메소드 등에는 클래스의 인스턴스를 생성하지 않고 독립적으로 사용할 수 있다.</br>

메모리 관점에서 보면, static 멤버는 힙(Heap)영역에 올라가지 않고 데이터 영역(DLLs)에 올라가게 된다.
이 영역은 프로그램이 시작되면 할당이 되며, 프로그램이 종료될 때 해제되는 전역 메모리 영역이다.

  • static 키워드를 메소드에 붙여 실습을 해보자
public class Math{
  public static int Add(int a, int b){
    return a + b;
  }
}

public class MainProgram{
  public static Main(){
    int num1 = 10;
    int num2 = 20;
    int sum = Math.Add(num1, num2); //클래스의 메소드를 이처럼 인스턴스 생성없이 독립적으로 사용 가능하다

    Console.WriteLine("합계 = " + sum);
  }
}
  • 필드에 static 키워드를 붙여서 실습을 해보자

    인스턴스와 달리 static 멤버는 각각의 객체별로 복사본을 가지지 않는다. 그대신 모든 객체가 공유하는 하나의 공간을 가진다. 예를들어 하나의 객체에서 static 맴버를 변경했다면, 다른 객체의 static 맴버 또한 변경이 일어난다.

public class MyStatic{
  public int instanceField = 0;
  public static int staticField = 0;
}

public class Program{
  MyStatic a = new MyStatic();
  MyStatic b = new MyStatic();

  a.instanceField += 10;
  b.instanceField += 10;

  Console.WriteLine(a.instanceField); // 10 출력
  Console.WriteLine(b.instanceField); // 10 출력
  
  a.staticField += 10;
  b.staticField += 10;

  Console.WriteLine(a.staticField); //20 출력
  Console.WriteLine(b.staticField); //20 출력
}

2.메소드의 오버로딩

메소드의 오버로딩(Method Overloading)이란 같은 이름의 메소드를 여러개 구현하지만, 매개변수의 유형과 개수를 다르게하여 구현하는 방식을 말한다.
이를 통해, 하나의 메소드 명으로 동일한 작업을 다양한 유형의 입력값으로 들어오는 데이터를 처리할 수 있다.

오버로딩된 메소드는 매개변수의 타입이나 순서, 개수 등을 다르게 하여 구현해야한다.

public class MyClass{
  public int Add(int a, int b){
    return a + b;
  }
  public int Add(int a, int b, int c){
    return a + b + c;
  }
  public double Add(double a, double b){
    return a + b;
  }
}

public class Program{
  public static void Main(){
    MyClass a = new MyClass();

    Console.WriteLine(a.Add(1, 2)); // 3 출력
    Console.WriteLine(a.Add(1.2, 2.2)); // 3.4 출력
    Console.WriteLine(a.Add(1, 2, 3));  // 6 출력
}

3.가변길이(params) 변수

가변길이 변수는 params 라는 키워드를 통해 정의되며, 이는 임의 개수의 인수를 전달 받기 위해 사용된다.
배열 형태로 전달이 되며, 가변길이 변수를 사용할 때 매개변수 제일 마지막 자리에 위치시켜야 한다.

public class MyClass{
  public int Add(params int[] number){
    int sum = 0;

    foreach(int num in number){
      sum += num;
    }
    reuturn sum;
  } 
}

public class Program{
  public static void Main(){
    MyClass a = new MyClass();

    Console.WriteLine(a.Add(1,2,3,4));  //10출력
    Console.WriteLine(a.Add(1,2,3,4,5)); //15출력
    Console.WriteLine(a.Add(1,2,3,4,5,6)); //21출력
    Console.WriteLine(a.Add(1,2,3,4,5,6,7)); //28출력
  }
}

태그: ,

카테고리:

업데이트:

댓글남기기