C#(15)
-
[ C# ] 메서드 매개 변수 ref, in, out
우리가 함수를 사용하다 보면 여러 클래스의 객체들을 이용하여 계산하거나 처리하는 경우가 많다. 그때 함수에 전달하는 변수(인수)들을 우리는 매개 변수라고 이야기 한다. 매개 변수들을 전달하는 방식은 크게 값에 의한 전달과 참조에 의한 전달로 나눌 수 있으며 기본적으로 함수에 전달되는 인수들은 값에 의한 전달 형식이다. 값에 의한 전달은 원본 변수의 값을 복사하여 해당 메소드들에게 넘기는 것을 의미하는데, 말 그대로 복사하여 전달하기 때문에 메소드에서 처리한 값이 원본 데이터에게 영향을 미치지 않는다. 그러나 참조에 의한 전달 방식은 원본 데이터의 주소(참조)를 해당 메소드에게 넘기는 것으로 메소드에서 처리된 값들은 그대로 원본 데이터에게 영향을 미친다. 우리가 주로 사용하는 클래스와 같은 경우는 참조에 ..
2024.03.27 -
[ C# ] 정렬 _ 1
우리는 원하는 데이터를 빠르게 탐색할 때, 정렬을 사용한다. 만약 데이터가 정렬되지 않았다면 일일히 순차적으로 탐색해야 하지만 정렬된 데이터의 경우 이진 트리 탐색 알고리즘을 이용하여 쉽게 탐색할 수 있다. 이진 트리 탐색 비교하고자 하는 값보다 크면 오른쪽, 작으면 왼쪽으로 이동하며 원하는 값이 나타날때까지 탐색하는 방식 정렬 알고리즘_기초편 1. 버블 정렬 가장 쉽지만 최악의 효율성을 가지고 있는 알고리즘. 전체 배열을 순회하면서 항목이 다른 항목보다 큰 경우 두 항목의 위치를 교환한다. (인접한 두개의 항목을 비교) 도중에 정렬이 완료되었어도 모든 배열을 순회할때까지 종료되지 않는다. 구현 형식 int[] BubbleSort(int[] array) { //배열의 모든 요소를 탐색 for(int i=..
2024.03.27 -
[ C# ] 플레이어 인벤토리 구현
구현 목록 1. 캐릭터의 일반 인벤토리 생성 캐릭터가 게임을 진행 중에 얻은 아이템을 저장하는 공간을 제작. Dictionary를 사용하여 아이템의 타입을 분류. 아이템 타입 : 소모품, 무기, 방어구 이미 가지고 있는 아이템을 주우면 새롭게 추가(Add)되는 것이 아닌 개수(count)를 조정. 만약 가지고 있지 않은 아이템을 주우면 새로 추가(Add) 포션을 사용하면 지정된 수치만큼 캐릭터의 HP를 증가. 무기와 방어구를 지정하고 사용하면 장비 인벤토리에서 장착, 또는 해제되도록 설정 2. 캐릭터의 착용 장비 인벤토리 생성 캐릭터가 장비를 착용하면 해당 장비를 저장하는 공간을 제작. Dictionary를 이용하여 아이템의 착용 부위를 분류. 분류 타입 : 무기, 머리, 갑옷, 다리 해당 부위에 장비를..
2024.03.16 -
[ C# ] 리스트(List)
Index 번호로 접근할 수 있는 강력한 형식의 개체 목록. 동적 배열의 형태를 띄고 있어 데이터가 삽입/감소되면 자동으로 용량을 증감한다. (크기는 자동적으로 2배씩 증가된다.) C++의 리스트와는 다른 구조를 가지고 있다. C++ List : Double Linked List 형식 양방향 노드 기반의 데이터 연결 구조이다. [노드] [구성 형식] [삭제] 값이 제거되면 이전 노드의 [다음 노드를 가리키는 포인터]가 다음 노드의 [이전 노드를 가리키는 포인터]와 연결된다. [삽입] 값이 추가되면 추가되는 노드의 [이전 노드를 가리키는 포인터]는 이전 노드와, [다음 노드를 가리키는 포인터]는 다음 노드와 연결된다. 장점 : 요소의 삽입/ 제거가 빠르다. 단점 : 양방향으로 연결되어 있어 탐색이 느리다...
2024.03.13 -
반복기 Iterator
자료구조에 저장되어 있는 요소들을 순차적으로 접근하는 객체. 반복기는 아래와 같은 경우에 사용할 수 있다. 1. 컬렉션의 각 항목에 대한 작업 수행 2. 사용자 지정 컬렉션 열기 3. LINQ 또는 다른 라이브러리 확장 4. 데이터가 반복기 메서드를 통해 효율적으로 흐르는 데이터 파이프라인 만들기 1. 컬렉션의 각 항목에 대한 작업 수행 반복문을 사용하여 각 요소에 특정 작업을 수행하는 것을 의미한다. 배열이나 리스트와 같이 여러 데이터들을 가지고 있는 데이터 구조에서 각 요소들을 순회하면서 특정 연산을 수행하는 것을 예시로 들 수 있다. 2. 사용자 지정 컬렉션 열기 사용자가 직접 만든 데이터 구조나 컬렉션을 사용하는 것을 의미한다. 사용자 지정 클래스나 구조체를 통해 데이터를 저장하고 필요에 따라 특..
2024.03.13 -
[ C# ] Stack 과 Queue 구현
stack과 queue는 임시로 저장해야 하는 경우에 유용하게 사용된다. stack (스택) 동일한 데이터 형식의 인스턴스로 이루어진 후입 선출(LIFO)방식의 컬렉션. Stack 는 배열로 구현되며 기본적으로 3가지의 기본 작업을 수행할 수 있다. 1. Push : 맨 위에 요소를 삽입. 2. Pop : 가장 위쪽의 요소를 제거. 3. Peek : 제거하지 않고 가장 위쪽의 요소를 반환. 위의 3가지 작업을 통해 필요에 따라서 자동으로 용량을 증감시킨다. 위의 3가지 기본 작업을 수행할 수 있는 Stack을 구현하겠다. class Stack { private const int Max_Value = 3; private int top; //스택의 최상위 인덱스 private T[] values; //스택 ..
2024.03.13