반응형

[Unity]/[C#] 54

[C#] 구조체(struct)

1. 구조체란? 2. 구조체 구현 예시 3. 구조체와 클래스의 차이 1. 구조체란? : 사용자 정의 데이터로, 값 형식입니다. 구조체를 정의하려면 struct 문을 사용합니다. *구조체의 특징 (C#에서의 구조체는 C/C++의 구조체와 다른 점이 존재) - 메서드, 필드, 속성 등을 가질 수 있습니다. - 구조체는 다른 클래스를 상속받을 수 없습니다. - 값 타입의 데이터로, new를 선언할 필요 없이 바로 사용 가능합니다. 2. 구조체 구현 예시 struct Student { public string name; public int age; public Student(string _name, int _age) { name = _name; age = _age; } }; public class MyStruc..

[Unity]/[C#] 2022.05.16

[C#] 인터페이스

1. 인터페이스란? 2. 인터페이스의 특징 3. 인터페이스와 추상클래스의 차이점 1. 인터페이스란? : 상속관계에 있어야 하는 클래스입니다. 모든 구현은 하위 클래스에서 이루어지며, 추상클래스와 유사하지만 다중상속이 가능하다는 점에서 차이점이 있습니다. C# 클래스가 인터페이스를 갖는 경우, 인터페이스의 모든 멤버에 대한 구현을 제공해야 합니다. 2. 인터페이스의 특징 - 구현이 없고, 형식만 포함합니다. 모든 구현은 하위에서 이루어집니다. - 다중 상속이 가능하다는 점에서 추상클래스와 차이가 있습니다. - 상속만 가능하고 new 키워드를 써 인스턴스로 생성하는 것은 불가능합니다. - 이벤트, 인덱서, 메서드, 속성을 포함합니다. 특히 메서드 부분을 많이 이용합니다. - 접근한정자를 명시하지 않아도 기본..

[Unity]/[C#] 2022.05.15

[C#] 메모리(+ 가비지)

1. C# 메모리 구조 2. C# 메모리 관리 1. C# 메모리 구조 메모리의 영역에는 4가지가 있습니다. Stack 영역 지역 변수, 매개 변수를 저장. 컴파일 시점에 크기를 할당하는 정적 할당을 사용 Heap 영역 사용자 관리 영역. 사용자 정의에 의해 할당된 메모리를 저장하거나 해제하는 동적 할당을 사용 Data 영역 전역 변수, static 변수를 저장. 컴파일 시점에 크기 할당. Code 영역 소스 코드, 기계어로 제어되는 메모리 영역. 크게 스택 영역과 힙 영역으로 나뉘는데요, 스택영역은 관리되지 않는 공간, 힙영역은 관리가 되는 공간입니다. * 관리 = 사용하지 않는 메모리를 스스로 해제하고, 다른 메모리가 올라갈 수 있게 하는 것. 이때, 메모리를 정리하는 일을 하는 것이 가비지 컬렉터입니..

[Unity]/[C#] 2022.05.13

[C#] Nullable (feat. int?)

1. Nnullable 타입이란? : Null을 가질 수 없는 타입(int, bool 처럼 값을 가지는 타입)이 Null을 가질 수 있게 해주는 타입입니다. * 참조 타입은 Null 체크가 가능함. 2. Nullable 타입의 용도 저는 이 타입을 Heap을 공부할 때 처음 사용해 보았습니다. https://geukggom.tistory.com/163 Heap에서는 리스트의 0번 인덱스 데이터 값을 사용하지 않기 때문에 null을 집어넣었는데요, 이때 List 타입을 사용했습니다. Nullable 타입은 타입명 다음에 ?를 붙여 사용합니다. (ex) int?, bool? HasValue메서드를 아래와 같이 사용하면 값이 있는지 없는지 확인할 수 있습니다. int?[] arr = new int?[3]; a..

[Unity]/[C#] 2022.02.04

[C# 기초] #21. 힙(Heap)

1. 힙이란? : 완전 이진 트리(Complete Binary Tree)의 일종. 여러 값의 데이터들 중 최대값과 최소값을 빠르게 찾아낼 수 있는 자료구조입니다. (시간복잡도로 따지면 O(logn)이 걸림) * 힙의 특징 - 중복 값을 허용 - 루트가 최대값(새로운 데이터가 추가될 때 부모노드와 크기를 비교해 크기가 더 큰 값을 부모노드로 올리기 때문) - 새로운 데이터를 추가할 때 작은 레벨 순서대로 채움(왼쪽부터) 2. 이진 탐색 트리와 힙의 차이 바로 이전 게시물에서 이진 탐색 트리에 대해 알아보았는데요, 힙과의 차이점에 대해 알아보겠습니다. https://geukggom.tistory.com/162 * 공통점 : 둘 다 이진 트리. * 차이점 - 힙은 이진 탐색 트리와 달리 중복 값을 허용. - ..

[Unity]/[C#] 2022.01.30

[C# 기초] #20. 트리(Tree), 이진트리, 이진 탐색 트리

1. 트리(Tree)란? : 계층적인 자료를 표현하는 대표적인 자료구조. 검색 알고리즘을 위해 주로 사용됩니다. 가장 위에 하나의 루트(Root)로부터 출발하여 그 밑에 0개 이상의 여러 자식 노드들을 가지는 구조를 가지고 있습니다. * 하나의 자식은 하나의 부모만 가질 수 있음. 2. 트리 구조에서 자주 사용되는 용어 * 루트(Root) : 트리의 가장 꼭대기 노드 * 간선(Edge) : 두 노드를 잇는 링크 * 브랜치(Branch) : 한 노드에서 갈라져 나온 자식 노드의 수 * 형제(Sibling) : 부모가 같은 자식 노드들 * 리프(Leaf) : 자식노드가 없는 하단의 노드 * 높이(Height) : 특정 노드에서 루트 사이의 길이 * 깊이(Depth) : 루트 노드에서 특정 노드까지의 길이 *..

[Unity]/[C#] 2022.01.29

[C# 기초] #19.Graph - Graph의 정의, 종류, 구현 방법

1. Graph란? 정점(vertex(V))과 그 정점을 연결하는 간선(edge(E)을 하나로 모아 놓은 자료구조. 연결되어 있는 객체 간의 관계를 표현할 수 있는 자료구조입니다. G = (V, E) (ex) 지도, 지하철 노선도, 전기 회로의 소자들, 도로 등. 2. Graph의 종류 1. 무방향 그래프 (Undirected graph) : 두 정점을 연결하는 간선에 방향이 없는 그래프. 두 정점의 양 방향으로 이동 가능. 2. 방향 그래프 (Directed graph) : 두 정점을 연결하는 간선에 방향이 있는 그래프. 특정 방향으로만 이동 가능. 3. 가중 그래프 (Weighted graph) : 정점을 연결하는 간선에 가중치(Weight)가 있는 그래프. 네트워크(Network) 라고도 함. 4...

[Unity]/[C#] 2022.01.26

[C#] .NET의 연결 리스트 : LinkedList<T>

LinkedList : 이중 연결 리스트로 되어 있으며, 리스트 노드는 LinkedListNode 클래스를 사용. 노드를 추가하기 위한 AddFirst(처음), AddLast(끝), AddBefore(특정 노드 앞), AddAfter(특정 노드 뒤) 등 다양한 메서드가 있음. * 연결리스트가 어떤 구조로 되어 있는지에 대한 자세한 내용은 아래 링크에 있습니다. https://geukggom.tistory.com/160 LinkedList의 메서드 종류 Count LinkedList에 포함된 노드의 수를 가져옴 First LinkedList의 첫번째 노드를 가져옴 Last LinkedList의 마지막 노드를 가져옴 AddFirst()(처음), AddLast()(끝), AddBefore()(특정 노드 앞),..

[Unity]/[C#] 2022.01.25

[C# 기초] #18.연결 리스트(Linked List)란?

1. 연결 리스트(Linked List)란? * 연결 리스트(Linked List) : 데이터를 저장하는 자료구조. 각 노드가 데이터와 포인터를 가지고 있으면서 노드들이 한 줄로 쭉 연결되어 있는 방식. 2. 단일 연결 리스트(Singly Linked List) : 단방향으로 노드들을 연결한 간단한 자료 구조. (ex) 아래는 4개의 노드를 갖는 단일 연결 리스트를 그림으로 표현한 것. using System; public class LinkedList_Study { public T Data { get; set; } public LinkedList_Study Next { get; set; } public LinkedList_Study(T data) { this.Data = data; this.Next =..

[Unity]/[C#] 2022.01.24

[C# 기초] #17.자료구조란?

1. 자료구조란? * 자료구조(Daga Structure) : 데이터를 효율적으로 접근하고 조작할 수 있게 데이터 구조를 만들어 관리하는 것. 각 자료구조마다 장단점이 있기 때문에 목적에 맞는 자료구조를 잘 선택하는 작업이 필요. 2. 자료구조의 종류 * 단순 구조(Primitive Data Structure) : 기본적인 데이터 타입. 정수, 실수, 문자, 불린(참/거짓) 등의 기초 타입이 여기에 속함. * 선형 구조(Linear Data Structure) : 자료들이 선형적으로 연결되어 있는 구조. 앞 자료와 뒷 자료가 1:1 구조를 가짐. 배열, 연결 리스트, 스택, 큐 같은 자료구조가 이에 속함. * 비선형 구조(Non-linear Data Structure) : 자료 간 관계가 1:다 또는 다..

[Unity]/[C#] 2022.01.22
반응형