본문 바로가기
카테고리 없음

[C#] ref / out

by 후야- 2024. 3. 19.

✳ ref 

→ 복사 , 참조

→ 기본값은 복사 

→ 메모리가 딴판

→ 포인터같은 느낌 원본을 가져와서 수정할 수 있음

using System.Security.Cryptography.X509Certificates;

namespace CShop
{
    class Program
    {
        
        static void AddOne(ref int number)
        {
            number = number + 1;
        }


        static void Main(string[] args)
        {
            // 복사(짭퉁) , 참조(진퉁)
            int a = 0;
            AddOne(ref a);   // 애가 복사하는 게 아니라 참조하겠다 , 수정 가능!
            Console.WriteLine(a);

        }
    }
}

 

        // 진퉁 원본으 수정할 수 있음
        static void AddOne(ref int number)  // ref 적어줘야함
        {
            number = number + 1;
        }
        // 짭퉁 원본을 수정할 수 없음
        static int AddOne2(int number)
        {
            number = number + 1;
            return number;
        }

 

 

using System.Security.Cryptography.X509Certificates;

namespace CShop
{
    class Program
    {
        // 값을 바꿀 때
        static void Swap(ref int a , ref int b)
        {
            int temp = a;   // 임시 저장
            a = b;
            b = temp;
        }

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

            Console.WriteLine(num1);
            Console.WriteLine(num2);
        }
    }
}

 

 


✳ out

namespace CShop
{
    class Program
    {
        
        // out 진퉁으로 작업
        static void Divide(int a, int b, out int result1, out int result2)
        {
            result1 = a / b;        // 나누기
            result2 = a % b;        // 나머지
        }

        static void Main(string[] args)
        {
            int num1 = 15;
            int num2 = 3;

            int result1;
            int result2;
            Divide(15, 3, out result1, out result2);

            Console.WriteLine(result1);
            Console.WriteLine(result2);
        }
    }
}