C#_메소드

Nubox·2024년 1월 31일

C#

목록 보기
2/4

메소드

메소드는 객체지향 프로그래밍 언어에서 사용하는 용어로, C와 C++에서의 함수와 동일하다.


함수와 동일하게 반환형에 대해서 지정하고 메소드의 내용에 대해서 정의한 다음, 호출하여 매개변수를 보내주면 결과를 반환한다.

class Example{


	public int Sum(int _a, int _b){
    	return _a+_b;
    }	
    //int형을 반환하는 Sum 메소드를 정의
    // 매개변수 _a와 _b를 더한 값을 반환한다.

	public static void Main(String[] _args){
    	
       int a = 5;
       int b = 3;
       Console.WriteLine($"Sum = {Sum(a, b)}");
       //보간법으로 Sum함수를 호출하면서 결과를 바로 출력
       //매개변수로 a와 b를 넘겨줌.
    }

}

매개변수

메소드에서 매개변수를 받아들일 때는 데이터의 복사가 이루어진다. 그래서 실제로 값의 변화를 주고 메소드가 종료되었을 때, 값을 출력해보면 변화가 없다.

public void change(int _a, int _b){

	int temp = _a;
    _a = _b;
    _b = temp;   // 매개변수의 값들을 교환
    
    Console.WriteLine($"a = {_a} \n b = {_b}"); 
}

public static void Main(string[] _args){
	int a = 5;
    int b = 4;
    
    change(a,b);
    Console.WriteLine($"a = {a}\n b={b}"); // 값 변화 X
    
}

만약 메소드 외부의 값에 변화를 줘야할때는 ref를 선언하여 매개변수로 받은 변수를 참조한다고 선언해야 외부 값에 대한 접근이 가능하다.

public void change(ref int _a, ref int _b){

       int temp = _a;
       _a = _b;
       _b = temp;
        Console.WriteLine($"a = {_a}\n b = {_b}");
}

public static void Main(string[] _args){
	int a = 5;
    int b = 4;
    
    change(a,b);
    Console.WriteLine($"a = {a}\n b={b}");// 값이 변화
    
}

오버로딩 Overloading

C#에서는 메소드 오버로딩이라는 개념이 존재한다.
하나의 메소드 이름을 가진 여러 개의 메소드를 구현하여 사용자가 호출할 때 사용하는 매개변수에 따라 알맞은 메소드로 사용되는 것을 의미한다. 컴파일 시점에 어떤 메소드에 작업이 이루어지는지 확인하므로 성능 저하의 문제는 없다.

public void print(){
	Console.WriteLine("Hello, World!!"):
}
public void print(int _a){
	Console.WriteLine($"Hello, {_a}");
}
public void print(int _a, int _b){
	Console.WriteLine($"Hello,{_a}! Hello,{_b}!");
}

public static void Main(string[] _args){
	
    
    print(); // Hello, World! 출력
    print(1); // Hello, 1 출력
    print(2,3); // Hello, 2! Hello, 3!출력
}

메소드 오버로딩을 통해 메소드 이름에 대한 고민을 줄여주며, 코드를 일관성 있게 유지해준다.

profile
게임 개발을 하면서 배워가는 것들을 조금씩 기록하는 곳입니다

0개의 댓글