• 티스토리 홈
  • 프로필사진
    유니얼
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
유니얼
  • 프로필사진
    유니얼
    • 분류 전체보기 (295)
      • Unity (17)
        • 게임 개발 (5)
      • Unreal (24)
        • 게임 개발 (20)
      • DirectX (36)
      • 코딩테스트 (91)
        • 프로그래머스 (25)
        • 백준 (66)
      • Google Workspace (1)
      • Programing (102)
        • C# (68)
        • C++ (24)
        • JavaScript (10)
      • 게임 서버 프로그래밍 (17)
      • Web (6)
        • 슈퍼코딩 (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
    등록된 댓글이 없습니다.
  • 최근 공지
    등록된 공지가 없습니다.
# Home
# 공지사항
#
# 태그
# 검색결과
# 방명록
  • C# 프로그래밍의 기초 : ref와 out 키워드
    2024년 03월 01일
    • 유니얼
    • 작성자
    • 2024.03.01.:09
    728x90

    C# 프로그래밍에서 ref와 out 키워드는 메서드와 상호작용하는 중요한 방법을 제공합니다. 이들은 변수를 참조에 의해 전달하여 메서드 내에서 변수의 값을 변경할 수 있게 하거나, 메서드로부터 여러 값을 반환받는 데 사용됩니다. 이 글에서는 ref와 out 키워드의 개념, 차이점 및 사용 방법에 대해 살펴보겠습니다.

    ref 키워드

    ref 키워드는 메서드에 변수를 참조로 전달할 때 사용됩니다. 이를 통해 메서드 내에서 인수로 전달된 변수의 값을 변경할 수 있으며, 변경된 값은 메서드 호출 후에도 유지됩니다. ref를 사용하기 위해서는 메서드 정의와 호출 양쪽에 ref 키워드를 명시해야 하며, 변수를 메서드에 전달하기 전에 초기화가 필요합니다.

    예제: ref 키워드 사용

    void ModifyValue(ref int value)
    {
        value += 10;
    }
    
    int number = 5;
    ModifyValue(ref number);
    Console.WriteLine(number); // 출력: 15

    이 예제에서 ModifyValue 메서드는 ref 키워드를 사용하여 number 변수의 참조를 전달받고, 해당 변수의 값을 변경합니다. 결과적으로, 원본 number 변수의 값이 메서드 호출 후 변경된 상태로 반영됩니다.

    out 키워드

    out 키워드는 메서드가 변수를 초기화하거나 값을 할당할 목적으로 참조에 의해 인수를 전달할 때 사용됩니다. 이는 메서드로부터 여러 값을 반환받는 경우에 유용합니다. out 키워드 역시 메서드 정의와 호출 양쪽에 명시되며, 변수를 out으로 전달하기 전에 초기화할 필요는 없습니다.

    예제: out 키워드 사용

    void GetValues(out int a, out int b)
    {
        a = 5;
        b = 10;
    }
    
    int x, y;
    GetValues(out x, out y);
    Console.WriteLine($"{x}, {y}"); // 출력: 5, 10

    이 예제에서 GetValues 메서드는 out 키워드를 사용하여 두 개의 변수 a와 b를 초기화하고 값을 할당합니다. 메서드 호출 후, x와 y 변수에 GetValues 메서드로부터 할당된 값이 반영됩니다.

    전체코드

    using System;
    
    class Program
    {
        /// <summary>
        /// ref 키워드를 사용한 메서드. 변수의 참조를 전달받아 값을 변경한다.
        /// </summary>
        /// <param name="value">참조에 의해 전달될 변수</param>
        static void ModifyValue(ref int value)
        {
            // ref를 사용하여 전달된 변수의 값에 10을 더함
            value += 10;
        }
    
        /// <summary>
        /// out 키워드를 사용한 메서드. 여러 값을 초기화하여 반환한다.
        /// </summary>
        /// <param name="a">첫 번째 반환 값</param>
        /// <param name="b">두 번째 반환 값</param>
        static void GetValues(out int a, out int b)
        {
            // out을 사용하여 메서드 내에서 변수를 초기화
            a = 5;
            b = 10;
        }
    
        static void Main(string[] args)
        {
    
            int number = 5;
            // ref 키워드를 사용하여 number 변수를 ModifyValue 메서드에 전달
            ModifyValue(ref number);
            Console.WriteLine(number); // 출력: 15
    
            int x, y;
            // out 키워드를 사용하여 GetValues 메서드로부터 두 값을 반환받음
            GetValues(out x, out y);
            Console.WriteLine($"{x}, {y}"); // 출력: 5, 10
        }
    }

    ref와 out의 차이점

    1. 초기화 요구사항: ref를 사용할 때는 변수가 초기화되어 있어야 하지만, out을 사용할 때는 초기화되지 않아도 됩니다.
    2. 용도 차이: ref는 기존 변수의 값을 메서드 내에서 변경하기 위해 사용되며, out은 메서드에서 값을 할당하고 반환하는 데 주로 사용됩니다.

    결론

    ref와 out 키워드는 메서드와의 상호작용을 통해 프로그램 내에서 변수의 값을 효율적으로 관리하고 조작할 수 있는 방법을 제공합니다. 이를 통해 프로그램의 유연성과 표현력을 높일 수 있습니다. 적절한 상황에서 ref와 out을 사용함으로써, 보다 정교하고 유지 보수가 용이한 코드를 작성할 수 있습니다.

    반응형
    다음글
    다음 글이 없습니다.
    이전글
    이전 글이 없습니다.
    댓글
조회된 결과가 없습니다.
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
목차
표시할 목차가 없습니다.
    • 안녕하세요
    • 감사해요
    • 잘있어요

    티스토리툴바