메소드를 이용한 Swap메소드 ( Call By Value )

2016. 12. 12. 12:50C# 콘솔( Console )/메소드

1. Call By Value



메소드명(매개변수1, 매개변수2); 

 


   -> 메소드로 데이터를 넘겨줄 때 Call By Value는 변수의 값만 넘겨주는 역할을 합니다. 따라서, 메인문에서 int 형으로 선언된 num1, num2와 메소드로 넘겨준 매개변수는 별개로 작용하게 되는 것입니다. ex)에서처럼 코드를 작성하게 되면 메인문의 변수 num1과 num2의 값이 변경된 것이아니라 메소드로 전달한 매개변수의 값을 스왑하고 출력은 매개변수가 아닌 num1과 num2를 출력하게 됩니다. 따라서, 메인문의 변수는 스왑은 일어나지 않게 되는 것입니다.


ex)



        static void Main(string[] args) 
        { 
            int num1 = 0, num2 = 0; 

            Console.WriteLine("첫번째 숫자를 입력하세요"); 
            num1 = int.Parse(Console.ReadLine()); 

            Console.WriteLine("두번째 숫자를 입력하세요"); 
            num2 = int.Parse(Console.ReadLine()); 

            Console.WriteLine("매개변수 스왑 전 메인문 :num1 = {0}, num2 = {1}", num1, num2); 
             
            swap(num1, num2); 

            Console.WriteLine("매개변수 스왑 후 메인문 :num1 = {0}, num2 = {1}", num1, num2); 
        } 

        static void swap(int num1, int num2) 
        { 
            //매개변수의 값이 스왑됨 
            int num_swap = num1; 
            num1 = num2; 
            num2 = num_swap; 

            Console.WriteLine("매개변수 스왑 후 :num1 = {0}, num2 = {1}", num1, num2); 
        }