... | ... | @@ -54,11 +54,22 @@ char slash = '\\' //역슬래시는 두번입력해야 역슬래시로 표현. |
|
|
### 변수
|
|
|
닷넷에서 변수의 종류는 값 형식, 참조 형식 이렇게 2가지 변수가 있다.
|
|
|
|
|
|
#### 값 형식 변수
|
|
|
값 자체가 스택 영역에 저장된다. 정수형, 실수형, 불린형 기본 타입 변수가 값 형식이다.
|
|
|
#### 값 형식 & 참조 형식 변수
|
|
|
* 값 형식 : 값 자체가 스택 영역에 저장된다. 정수형, 실수형, 불린형 기본 타입 변수가 값 형식이다.
|
|
|
* 참조 형식 : 값은 힙 영역에 저장되고 그 값의 주소값이 스택 영역에 저장된다. 초기화되지 않은 모든 참조형 변수는 null 값을 가진다. string, 배열, 클래스, object
|
|
|
* 대입 : 값 형식끼리 대입했을 때는 스택 내부에서 각각 다른 위치에 동일한 값이 복사된다. 참조 형식의 경우에는 힙 메모리에 하나의 값만 위치한 상황에서 스택의 변수들이 같은 힙 위치를 가리킨다.
|
|
|
|
|
|
#### 참조 형식 변수
|
|
|
값은 힙 영역에 저장되고 그 값의 주소값이 스택 영역에 저장된다. string, 클래스, object가 참조 형식이다.
|
|
|
초기화되지 않은 모든 참조형 변수는 null 값을 가진다. 가리킬 수 있는 힙 주소가 없기 때문에 스택 영역에는 0을 담고 있게 된다.
|
|
|
####
|
|
|
#### 기본값
|
|
|
* bool : false
|
|
|
* 숫자 : 0
|
|
|
* 참조 형식 : null
|
|
|
|
|
|
#### 상수
|
|
|
상수는 const 예약어를 쓰는데, 컴파일 할 때 값이 결정되어야 한다.
|
|
|
|
|
|
```c#
|
|
|
int n = Math.Max(0, 5); //프로그램을 실행할 때 n값이 결정
|
|
|
|
|
|
const int maxN = Math.Max(0, 5); //maxN은 상수이므로 컴파일할 때 값이 결정되어야 하는데
|
|
|
//Max 메소드는 런타임에 실행되므로 오류 발생
|
|
|
``` |