본문 바로가기
c# 입문

[c#] 복사(copy)타입 변수와 참조(ref)타입 변수

by javaman 2022. 7. 9.

절차 procedual 지향

 

 - 함수 기반

 - 로직의 유지 보수가 힘들다

 

=> 객체 지향 프로그래밍 !

 

복사 타입 변수 / 참조 타입 변수

 

참조 타입 변수 : 클래스 , 리스트 등

복사 타입 변수 : 구조체

 

using System;

namespace Class
{
    //클래스와 구조체 차이점
    class Program
    {
        //Knight클래스
        //클래스는 참조 타입 변수
        class Knight
        {
            public int hp;
            public int attack;
        }
        
        //Mage 구조체
        //구조체는 복사 타입 변수
        struct Mage
        {
            public int hp;
            public int attack;
        }
        static void Main(string[] args)
        {
            Mage mage = new Mage();
            mage.hp = 50;
            mage.attack = 10;

            Mage mage2 = mage;
            mage2.hp = 0;//mage.hp = 50


            Knight knight = new Knight();
            knight.hp = 100;
            knight.attack = 30;

            Knight knight2 = knight;
            knight2.hp = 10;//knight.hp = 10

        }
    }
}

 

 

main 스택 

 

복사 타입변수           본체                          


---------------------------------------------------------

참조 타입변수          힙 주소  8비트  저장

              

 

 

힙 메모리

 

참조 타입                          본체