c#
-
2024.03.15 - IEnumerable, IEumeratorC# 2024. 3. 14. 13:42
IEnumerable 인터페이스 enumerable은 '열거할 수 있는' 이라는 뜻을 가진다. IEnumerable을 상속한 클래스는 열거할 수 있다는 성질을 가진다. 컬렉션은 IEnumerable을 상속하고 있다. - GetEnumerator() IEnumerable은 GetEnumerator()라는 메서드를 가지고 있다. GetEnumerator()는 IEnumerator를 return한다. IEnumerator 인터페이스 IEnumerator는 컬렉션에서 반복을 돕는 기능을 한다. - .Current IEnumerator는 Current라는 속성을 가진다. Current는 컬렉션의 enumerator가 가리키는 곳의 데이터를 반환한다. - .MoveNext() IEnumerator는 MoveNext..
-
2024.03.13 - LinkedListC# 2024. 3. 14. 02:54
연결 리스트(Linked List) 연결 리스트란, 노드들이 한 줄로 연결되어 있는 방식으로 구성된 자료구조이다. 각 노드는 데이터와 다른 노드를 가리키는 포인터로 구성되어 있다. 단일 연결 리스트(Singly Linked List) 단일 연결 리스트는 단방향으로 노드들을 연결한 자료구조이다. 각 노드의 포인터는 다음 노드를 가리킨다. 이중 연결 리스트(Double Linked List) 이중 연결 리스트는 양방향으로 노드들을 연결한 자료구조이다. 각 노드는 이전 노드와 다음 노드를 가리키는 포인터 2개를 가지고 있다. 때문에 양방향으로 탐색이 가능하다. C#의 LinkedList C#에서는 LinkedList 클래스를 통해 Double Linked List로 구현된 자료구조를 제공한다. - Linked..
-
2024.03.13 - ListC# 2024. 3. 13. 22:42
여러 개의 같은 타입의 데이터를 주고받을 때 배열(Array)을 많이 썼다. 배열 좋긴한데 길이가 고정되어 있는 거랑, 선언할 때 길이를 정해줘야 하는 게 맘에 안 든다. 선언만 해두고 요소를 추가하면 크기가 알아서 늘어나는 배열 없을까? List C#에서는 List 클래스를 통해서 배열처럼 인덱스를 통해 각 요소에 접근 가능한 자료구조를 제공한다. List는 배열과 유사하지만, 배열과 다르게 동적으로 크기가 늘어나는 특징을 가지고 있다. List의 특징 List는 배열처럼 인덱스로 List의 데이터에 접근이 가능하다. 하지만 크기가 정해져 있는 배열과 달리, List는 크기를 벗어난 인덱스에 데이터를 추가하려고 하면, 동적으로 크기가 변한다. List에 데이터를 삽입/삭제 하면 뒤 인덱스의 다른 데이터..
-
2024.03.12 - this, this 생성자C# 2024. 3. 12. 23:34
this 키워드 this 키워드는 클래스의 현재 인스턴스를 가리킨다. (대충 자기 자신을 가리킨다고 이해할 수 있다.) this 키워드가 가장 많이 활용되는 방법으로는 비슷한 이름으로 숨겨진 멤버를 한정할 때이다. (대충 클래스의 멤버와 이름이 겹치는 외부의 무언가와 구분하기 위해서 사용한다고 이해할 수 있다.) - 클래스의 생성자에서 사용되는 this(가장 많이 활용되는 방법) 한 번쯤 봤을 법한 this의 사용방법이다. Player의 생성자의 매개변수 name, atk는 Player 클래스의 인스턴스가 가지고 있는 멤버 name, atk와 이름이 겹친다. 이를 this 키워드로 한정해 주면 name, atk가 클래스의 멤버인지, 매개변수인지 구분할 수 있다. this 생성자 클래스는 생성자의 매개변수..
-
2024.03.12 - 큐(Queue)C# 2024. 3. 12. 19:22
자료구조의 큐(Queue) 큐는 먼저 추가된 데이터가 먼저 출력되는 선입선출(First-In First-Out : FIFO) 자료구조이다. 큐를 대기줄처럼 생각하면 좋다. 식당에서 대기하고 있는데 스택처럼 나중에 줄 선 사람이 먼저 식당에 들어가면 안 되지 않겠는가? 먼저 줄 선 사람이 먼저 식당에 들어가는 것처럼 큐도 먼저 담긴 데이터가 먼저 나간다. 선형 큐(Linear Queue) 큐에 데이터가 들어가는 과정을 EnQueue, 큐에서 데이터가 나가는 과정을 DeQueue라고 한다. 큐의 맨 앞의 데이터를 Front, 맨 뒤의 데이터를 Rear라고 한다. 선형 큐의 문제점 앞의 데이터를 DeQueue하면 Front는 계속 뒤로 옮겨지고, 다시 데이터를 EnQueue하면 Rear도 뒤로 옮겨진다. Re..
-
2024.03.12 - 스택(Stack)C# 2024. 3. 12. 17:15
자료구조(Data Structure) 자료구조란 데이터를 표현하고 저장하는 방법을 말한다. 자료구조의 스택(Stack) 스택은 나중에 추가된 데이터가 먼저 출력되는 후입선출(Last-In First-Out : LIFO) 자료구조이다. 스택을 상자나 프링글스 통이라고 생각하면 좋다. 스택에 데이터를 넣는 과정을 push, 스택에서 데이터를 출력하는 과정을 pop이라고 한다. 스택의 맨 뒤에 저장된 데이터를 top이라고 한다. C#에서의 스택 C#에서는 일반화된 Stack 클래스를 통해 스택 자료구조를 지원한다. - 스택을 선언하는 방법 Stack 스택_이름 = new Stack(); - 스택에 데이터를 넣고(Push) / 빼보자(Pop) 스택_이름.Push(넣을_데이터); //스택에 데이터를 담는다. 스택..
-
2024.03.12 - Nullable Type(?), 조건 연산자(?:), null 조건부 연산자(?.)C# 2024. 3. 12. 09:21
Nullable Type Nullable Type이란 Null을 값으로 가질 수 없는 형식을 Null을 가질 수 있게 만드는 것을 말한다. 값 형식 데이터(int, double, 구조체 등등..)들이 Null을 가질 수 없다. - Nullable Type 선언 방법 데이터_타입? 이름 - 사용 예시 조건 연산자(삼항 연산자)(?:) 조건 연산자는 피연산자를 3개 가지는 특별한 연산자이다. - 조건 연산자 사용 방법 조건식 ? 참일_때의_반환_값 : 거짓일_때의_반환_값 - 사용 예시 null 조건부 연산자(?.) ?. 연산자는 객체 뒤에 붙어서 객체가 null이 아니면 객체의 멤버에 접근하게 해준다. ?. 앞의 객체가 null이라면, 결과로 null을 반환한다. - 조건부 연산자 사용방법 객체?.접근할_..
-
2024.03.11 - 예외 처리(Exception Handling)C# 2024. 3. 12. 03:11
예외 처리(Exception Handling) 예외(Exception)란 프로그래머가 생각한 시나리오에서 벗어나는 사건을 말한다. 예외가 프로그램의 오류나 다운으로 이어지지 않도록 적절하게 처리하는 것을 예외 처리라고 한다. 예외를 만들어 보자 흔히 하게되는 '배열의 인덱스를 벗어난 곳을 참조하기'를 해보자. 배열에서 범위를 벗어난 인덱스 였다고 IndexOutOfRangeException 예외 객체를 던졌다. 던져진 예외 객체를 Main에서 처리해주지 못하면, CLR(Common Language Runtime)에서 예외 내용을 출력한 뒤 프로그램을 강제로 종료한다. 갑자기 죽어버리는 프로그램은 신뢰할 수 없다. 프로그래머는 코드내에서 예외가 처리될 수 있도록 해야한다. try ~ catch로 예외를 받..