C#
-
배열이 동일한지 비교C# 2024. 4. 1. 00:24
배열이 동일한지 비교하는 방법은 크게 3가지가 있다. 일단 하나는 반복문을 통해서 각각의 배열이 동일 인덱스에 동일한 요소를 가지고 있는지 확인하는 방법이다... 이 방법은 매우 번거롭다. 다른 방법으로는 Equals와 SequenceEqual 메서드를 사용하는 방법이 있다. Object.Equals(Object?) 두 오브젝트가 같은 값을 가지는지 boolean을 반환하여 알려준다. null값을 가지더라도 비교할 수 있다. 그런데 Equals는 배열에 사용하면 이상한점을 발견할 수 있다. 분명 두 배열의 모든 요소가 같은데 False를 반환한다. 사실 Equals를 참조형식 자료형에 사용하면, 두 변수가 같은 값을 참조하고 있는지 검사한다. arr3에 arr를 참조 복사 했더니 Equals가 True를..
-
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을 반환한다. - 조건부 연산자 사용방법 객체?.접근할_..