STUDY 📖/C#

패스트캠퍼스 챌린지 10일차

@예민한 방구석여포 힘히힘 2021. 9. 15. 23:57
반응형

Ch 03. 데이터란 무엇일까 - 03.기본데이터 3-2

 

값 형식 vs 참조형

패스트 캠퍼스 강의자료

 

스택영역은 쓰고 지우고 쓰고 지우고 하는 것이고,

힙 영역(더 오래 가지고 있음)은 가지고 있다가 사라진다고 생각해도 된다.

 

 

 

 

 

 

_028_Data_reference

어렵다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

/*-----------------------------------------------------------------------------
 * Name: _028_Data_Reference
 * DESC: Refrence참조 기초(두 개의 값이 서로 영향을 준다)
-----------------------------------------------------------------------------*/
namespace _028_Data_Reference
{
    class Program
    {
        static void Main(string[] args)
        {
            int num = 100;
            int refNum = num;
            refNum = 1000;

            Console.WriteLine("refStr: {0}    ReferenceEquals: {1}", num, Object.ReferenceEquals(num, refNum));

            int[] arrNum = { 100, 200 };
            int[] refArrNum = arrNum;
            refArrNum[0] = 1000;

            Console.WriteLine("refStr: {0}   ReferenceEquals: {1}", arrNum[0], Object.ReferenceEquals(refArrNum, arrNum));
        }
    }
}

arrNUm을 찍었는데 100이 아니라 1000이 찍힘. 

두개의 데이터가 영향을 받는다고 생각하면 된다.  -> reference  하기 때문에!

서로 같은 곳을 보고 있기 떄문에!

그래서, ReferenceEquels = TRUE 가 나온다.

서로 참조하니 ? 예.

 

 

 

 

boxing 과 unboxing

여기에도 마찬가지로 stack과 heap이 있는데, 

heap는 데이터를 오래 가지고 있어 데이터가 쌓이면 무거워져서 안좋다.

 

 

boxing

object o = i 

를 진행할때, 

스택영역에 object가 생성되있고 , heap 영역에 값을 복사해서 가지고 옴 

=> 불필요한 메모리를 사용함 = boxing

 

 

 

unboxing

heap 영역에 저장했던 obect o를 강제로 캐스팅 연산을 하여 형변환을 함

이것도 굉장히 무거운 작업 ( boxing 보다는 가벼움)

 

=> boxing과 unboxing을 많이 쓰면 안좋다!

 

 

 

 

* 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다. * -10일차 아자아자

억장 무너지는 수요일

 

필수 링크 : https://bit.ly/37BpXiC