• 티스토리 홈
  • 프로필사진
    유니얼
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
유니얼
  • 프로필사진
    유니얼
    • 분류 전체보기 (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# 프로그래밍의 기초 : 복사(값)와 참조
    2024년 03월 01일
    • 유니얼
    • 작성자
    • 2024.03.01.:39
    728x90

    C# 프로그래밍에서 데이터 타입은 크게 값 타입(Value Type)과 참조 타입(Reference Type)으로 구분됩니다. 이 두 타입은 데이터의 저장 방식, 전달 방식, 복사 방식이 서로 다르며, 이러한 차이점을 이해하는 것은 프로그램의 효율성과 안정성을 보장하는 데 필수적입니다.

    값 타입(Value Type)

    값 타입은 데이터를 직접 저장합니다. 정수형(int), 부동 소수점(float, double), 구조체(struct) 등이 여기에 해당합니다. 값 타입의 변수를 다른 변수에 할당하면 데이터의 복사본이 생성되며, 이는 서로 독립적인 메모리 공간에 저장됩니다. 따라서, 하나의 변수 값을 변경해도 다른 변수에는 영향을 미치지 않습니다.

    예시: 값 타입

    int a = 10;
    int b = a; // 'a'의 값을 'b'에 복사. 'a'와 'b'는 독립적인 메모리 공간을 가짐.
    b = 20; // 'b'의 값을 변경해도 'a'에는 영향 없음.
    Console.WriteLine(a); // 출력: 10

    참조 타입(Reference Type)

    참조 타입은 메모리 내의 객체나 데이터 구조를 가리키는 참조(주소)를 저장합니다. 클래스(class), 배열(array), 인터페이스(interface) 등이 참조 타입에 속합니다. 참조 타입의 변수를 다른 변수에 할당하면, 원본 데이터의 주소가 복사되므로 두 변수는 같은 객체나 데이터 구조를 가리키게 됩니다. 이로 인해 한 변수를 통해 객체를 변경하면 다른 변수를 통해서도 변경된 상태를 볼 수 있습니다.

    예시: 참조 타입

    Car car1 = new Car();
    car1.model = "Honda";
    Car car2 = car1; // 'car1'의 참조(주소)를 'car2'에 복사. 'car1'과 'car2'는 같은 객체를 가리킴.
    car2.model = "Ford"; // 'car2'를 통해 객체의 'model'을 변경하면, 'car1'을 통해서도 변경된 값을 볼 수 있음.
    Console.WriteLine(car1.model); // 출력: Ford

    전체코드

    using System;
    
    class Program
    {
        class Car
        {
            public string model;
            public void Drive()
            {
                Console.WriteLine(model + " is driving.");
            }
        }
    
        static void Main(string[] args)
        {
            // 값 타입 예시
            int a = 10;
            int b = a; // 'a'의 값을 'b'에 복사한다. 'a'와 'b'는 독립적인 메모리 공간을 가진다.
            b = 20; // 'b'의 값을 변경해도 'a'에는 영향을 미치지 않는다.
            Console.WriteLine(a); // 출력: 10
    
            // 참조 타입 예시
            Car car1 = new Car();
            car1.model = "Honda";
            Car car2 = car1; // 'car1'의 참조(주소)를 'car2'에 복사한다. 'car1'과 'car2'는 같은 객체를 가리킨다.
            car2.model = "Ford"; // 'car2'를 통해 객체의 'model'을 변경하면, 'car1'을 통해서도 변경된 값을 볼 수 있다.
            Console.WriteLine(car1.model); // 출력: Ford
        }
    }

     

    복사와 참조의 중요성

    값 타입과 참조 타입의 이해는 데이터를 어떻게 저장하고, 전달하며, 복사할지 결정하는 데 중요합니다. 특히, 프로그램의 성능 최적화와 메모리 관리 측면에서 중요한 역할을 합니다. 또한, 객체의 상태 변경을 의도한 대로 관리할 수 있도록 해줍니다.

    결론

    값 타입과 참조 타입은 각각의 사용 사례와 장단점이 있습니다. 프로그램의 요구 사항과 특성에 따라 적절한 타입을 선택하여 사용하는 것이 중요하며, 이를 통해 프로그램의 유연성과 효율성을 높일 수 있습니다. C#과 같은 객체 지향 언어에서 이러한 개념의 정확한 이해는 효과적인 프로그래밍을 위한 기초가 됩니다.

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

    티스토리툴바