메서드에 인자를 전달할 때 사용하는 방법

    

class Program
    {
        static void Main(string[] args)
        {
            /* Parameter */

 

            // 1. 파라미터
            int a = 10;
            int b = 20;
            int res = 0;

            res = sumAnB(a, b);  // a = 10, b = 20 
            Console.WriteLine(res.ToString());  // 30

 

            // 2. ref : 초기화 필요, 전달되는 변수의 주소값을 전달, 메서드 실행 후 원래 값 변경
            doubleAnB(a, ref b); // a = 10, b 의 주소값을 전달 
            Console.WriteLine("a = {0}, b = {1}", a, b); // 10, 40

            // 3. out : 초기화 필요 없으며, 전달된 메서드에서 호출 전 값들은 무시됨. 실행된 결과값을 전달 받을 때 유용함
            int sum;
            double avg;
            avgAnB(a, b, out sum, out avg);  // a = 10, b = 40
            Console.WriteLine("sum = {0}, out = {1}", sum, avg); // 50, 25.00


            // 4. Variable Arguments : 가변 파라미터
            int sumParam = 0;
            sumParam = sumList(1);  // 1
            sumParam = sumList(1, 2);  // 3
            sumParam = sumList(1, 2, 3);  // 6 
            sumParam = sumList(10, 20, 30, 40, 50, 100);  // 250

        }

        // 1. general parameter
        static int sumAnB(int a, int b)
        {
            int sum = a + b;
            
            return sum;
        }

        // 2. referece parameter
        static void doubleAnB(int a, ref int b)
        {
            a *= 2;
            b *= 2;
        }


        // 3. out parameter
        static bool avgAnB(int a, int b, out int sum, out double avg)
        {
            sum = a + b;
            avg = (a + b) / 2;
            return true;
        }


        // 4. Variable Arguments : 가변 파라미터
        static int sumList(params int[] nums)
        {
            int sumTotal = 0;

            foreach(var n in nums)
            {
                sumTotal += n;
            }

            return sumTotal;
        }

    }

'C#' 카테고리의 다른 글

C# 계산기 만들기(2)  (0) 2021.02.24
C# 계산기 만들기(1)  (0) 2021.02.24
[C#] Exception 처리, try catch finally  (0) 2021.01.15
[C#] Yield 예제  (0) 2021.01.15
[C#] 문자열 처리  (0) 2021.01.15

+ Recent posts