기본 데이터 형식, 복합 데이터 형식
C#은 다양한 종류의 데이터 형식(Data Type)을 제공한다.
데이터 형식(Data Type) == 데이터 타입으로 읽어보기
수와 텍스트를 다루는 데이터 형식(Data Type)은 물론, 이미지나 소리를 다룰 수 있는 데이터 형식(Data Type)도 제공한다.

C#이 제공하는 기본 데이터 형식에는 모두 15가지가 있는데, 이들은 크게 숫자형식, 논리형식, 문자열형식, 오브젝트 형식으로 나뉜다. 이중에서 문자열 형식과 오브젝트 형식만 참조 형식에 해당하며, 나머지는 값 형식이다.
복합 데이터 형식의 종류에는 구조체, 클래스, 배열 등이 있습니다.
데이터 형식은 기본 데이터 형식과 복합데이터 형식으로 분류하는 동시에, 값 형식과 참조 형식으로도 분류할 수 있습니다.

변수(Variable)
변수를 코드에서 보면 값을 대입시켜 변화시킬 수 있는 요소이지만,
메모리쪽에서 보면 '데이터를 담는 일정 크기의 공간'이라는 의미를 갖기도 한다.('일정크기'는 데이터 형식에 따라 결정된다.)
그러므로 C#코드를 작성하면서 변수를 만들때는 그 이면에 있는 메모리 세계도 함께 생각해야함.
'이 변수를 위해 메모리에 이만큼의 공간이 마련됐겠구나'정도로 생각하기.
코드 위에 뭔가를 '만든다'라는 표현은 잘 쓰지않고, '선언한다(Declare)'라고 쓴다.
'변수를 만든다' 대신에 '변수를 선언한다'라고 쓴다.
변수를 컴파일러한테 선언한다
우리가 변수를 하나 선언하면, 이것은 컴파일러에게 "이 변수에 필요한 메모리 공간을 예약해줘."라고 알린다는 뜻이다.
변수는 다음과 같은꼴로 만든다(선언한다).

이렇게 하면 컴파일러는 int형식을 위해 메모리공간을 할당하고, 이 공간을 x라는 식별자가 사용할 수 있도록 준비한다.

이 코드가 실행되고 나면 x를 위해 할당된 메모리 공간에 데이터 100이 기록된다.

또, 선언과 데이터 할당을 동시에 할 수도 있다.
int x; //선언과
x = 100; //데이터 할당을 별도로 할 수도 있지만
int x = 100; //선언과 초기화를 한 번에 할 수도 있다.
초기화(Initialization)란, 변수에 최초의 데이터를 할당하는 것을 의미한다.
값 형식, 참조 형식
값 형식 == 값 타입 , 참조 형식 == 참조 타입 으로 읽어보기
값 형식은 변수가 값을 담는 데이터 형식을 말하고,
참조 형식은 변수가 값 대신 값이 있는 곳의 위치(참조)를 담는 데이터 형식을 말한다.
이 둘을 이해하려면 C#으로 작성한 프로그램이 사용하는 두가지 메모리 영역에 대해 알고 있어야 함.
이 두가지 메모리 영역중 하나를 스택(Stack), 또 다른 하나를 힙(Heap)이라고 함.
이 두 메모리 영역 중에서 값 형식과 관련있는 것은 스택 메모리 영역, 참조 형식과 관련 있는 것은 힙 메모리 영역이다.


힙, 스택
참조 형식의 변수는 힙과 스택을 함께 이용하는데, 힙 영역에서는 데이터를 저장하고 스택 영역에는 데이터가 저장된 힙 메모리의 주소를 저장한다.
이제 왜 ' 참조 형식'이라는 이름이 붙여졌는지 감이 잡히는가?
데이터를 직접 저장하는 대신 실제 데이터가 저장된 메모리의 주소를 '참조'한다고 해서 '참조 형식'인 것이다.
object형식은 참조 형식이기 때문에 힙에 데이터를 할당한다.int형식이나 double형식은 값형식이기 때문에 스택에 데이터를 할당하고.
https://tech-runner.tistory.com/175
얕은 복사, 깊은 복사
Struct는 값 형식(Value)이다. 데이터 자체를 직접 저장하며, 변수에 할당될때 값이 복사된다.
이로 인해 각 변수는 독립적인 데이터를 가진다.
Class는 참조 형식(Reference Type)이다. 데이터의 참조(메모리 주소)를 저장하며, 변수에 할당될때 참조가 복사된다.
따라서 여러 변수가 동일한 객체를 참조 할 수 있다.
얕은 복사와 깊은 복사의 차이점은?
->얕은 복사는 객체의 '참조 값(주소)'만 복사하는 것이다.
깊은 복사는 객체의 모든 수준의 필드와 하위 객체까지 재귀적으로 복사하는 것이다. 원본객체가 참조하는 모든객체를 새로운 메모리 공간에 복사한다. 즉, 원본 객체와 복사된 객체가 독립적인 객체를 갖게 한다.
https://tech-runner.tistory.com/175
참고했습니다