... | ... | @@ -101,6 +101,27 @@ position.y = 3; |
|
|
* `new` 연산자를 사용하여 선언해도 되고, 사용하지 않고 선언해도 된다.
|
|
|
* **Nullable 형식**을 사용하여 `null` 값을 할당할 수 있다.
|
|
|
|
|
|
### **열거형**
|
|
|
**열거형**은 이름을 갖는 정수형 상수들을 열거한 형식이다. 정수 값을 의미 있는 단어들로 표현할 수 있어서 가독성을 높여준다. 첫 번째 열거자의 값은 0이며, 그 이후의 열거자 값은 순서대로 1씩 증가한다. **열거형**은 `enum` 키워드를 사용하여 정의할 수 있다.
|
|
|
|
|
|
```javascript
|
|
|
enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
|
|
|
```
|
|
|
```javascript
|
|
|
Days today = Days.Tuesday;
|
|
|
|
|
|
switch (today)
|
|
|
{
|
|
|
case Days.Saturday:
|
|
|
case Days.Sunday:
|
|
|
Console.WriteLine("Weekend");
|
|
|
default:
|
|
|
Console.WriteLine("Weekday");
|
|
|
}
|
|
|
|
|
|
// 출력 결과 : Weekday
|
|
|
```
|
|
|
|
|
|
### **Stack vs. Heap**
|
|
|
#### **Stack**
|
|
|
**Stack**은 자료구조에서 다루는 *Stack*의 원리로 데이터를 저장하는 메모리 공간이다. Thread는 이 공간을 활용해서 Method의 실행, 지역변수 선언, 호출 후 실행될 주소를 처리한다. **Stack**은 기본적으로 1MB 공간을 할당하는데 이 공간을 넘어가면 *Stack Overflow*가 발생한다. 예를 들어 재귀(recursive)로 Method를 계속해서 호출하면 **Stack**의 공간이 모두 사용되어 *Stack Overflow*가 발생한다. 이 경우 오류를 알리는 Method를 호출할 공간조차 없기 때문에 정확한 원인을 파악하는 데 어려움이 있다.
|
... | ... | @@ -363,11 +384,11 @@ Console.WriteLine(defaultObjet); // 실행 결과 : null |
|
|
* **typeof(T)** : T 형식의 대한 객체를 반환한다.
|
|
|
|
|
|
```javascript
|
|
|
Type typeInt = typeof(int);
|
|
|
Type typeObject = typeof(Object);
|
|
|
Type intType = typeof(int);
|
|
|
Type objectType = typeof(Object);
|
|
|
|
|
|
Console.WriteLine(typeInt); // 실행 결과 : System.Int32
|
|
|
Console.WriteLine(typeObject); // 실행 결과 : System.Object
|
|
|
Console.WriteLine(intType); // 실행 결과 : System.Int32
|
|
|
Console.WriteLine(objectType); // 실행 결과 : System.Object
|
|
|
```
|
|
|
|
|
|
* **checked** : 정수 계열 형식의 산술 연산 및 변환에 대한 Overflow를 검사한다.
|
... | ... | |