c# 8

[C#] 변수 종류와 키워드

C#은 객체 지향 프로그래밍 언어로, 다양한 종류의 변수를 지원합니다. 변수는 데이터의 값을 저장하기 위해 사용되며, 변수의 범위와 수명에 따라 전역 변수, 지역 변수, 정적 변수, 매개 변수 등으로 나뉩니다. 또한 readonly와 const 키워드는 변수의 불변성을 보장하기 위해 사용됩니다. 이번 글에서는 각 변수의 특성과 사용법에 대해 자세히 설명하고, 관련 예제 코드를 함께 보여드리겠습니다.  1. 전역 변수(Global Variable)전역 변수는 클래스 내부, 메서드 외부에 선언되어 클래스의 모든 메서드에서 접근할 수 있는 변수입니다. 그러나 이 변수는 클래스의 인스턴스와 밀접하게 연관되어 있으며, 클래스의 인스턴스가 생성될 때 힙(Heap) 메모리에 할당되고, 인스턴스가 소멸될 때 함께 해제..

CS 공부 2024.08.09

[Unity] 코루틴(Coroutine)

1. Unity 코루틴(Coroutine)이란?유니티(Unity)에서 코루틴(Coroution)은 프레임 간에 멈추고 재개할 수 있는 특별한 형태의 메서드입니다. 코루틴은 특정 시간 동안 대기하거나 비동기 작업을 수행할 때 유용하게 사용할 수 있습니다. 유니티에서는 코루틴을 사용하여 비동기적인 작업을 처리할 수 있으며, 이는 게임 개발에서 자주 사용됩니다.   주요 특징1. 메인 스레드에서 실행Unity의 코루틴은 메인 스레드에서 실행됩니다. 이는 코루틴이 Unity API와 상호작용할 수 있게 해주며, 비동기 작업을 쉽게 처리할 수 있게 합니다. 따라서, 코루틴 내에서 Unity 오브젝트에 안전하게 접근할 수 있습니다. 2. 비동기 작업코루틴은 비동기적으로 작업을 처리할 수 있게 해주며, 긴 작업을 여..

Unity 공부 2024.08.04

[C#] Virtual, Abstract, Interface

객체 지향 프로그래밍을 할 때 'virtual', 'abstract', 'interface'는 알고있어야 하는 개념입니다. 각각의 키워드는 클래스와 메서드의 동작 방식을 제어하고, 코드의 유연성과 재사용성을 높이는데 사용됩니다. 이 글에서는 세 가지 키워드의 차이점과 특징을 서술해보겠습니다.    설명 Virtual정의: 'virtual' 키워드는 메서드, 속성, 인덱서 또는 이벤트 선언에 사용되어, 파생 클래스에서 이를 재정의할 수 있게 합니다.특징:기본 구현을 제공할 수 있습니다.파생 클래스에서 'override' 키워드를 사용하여 재정의할 수 있습니다.선택적으로 재정의할 수 있습니다.기본 클래스에서 공통 동작을 정의하고, 파생 클래스에서 필요에 따라 동작을 변경할 때 사용합니다.코드 예시:publi..

CS 공부 2024.07.09

[C#] 박싱과 언박싱 (Boxing & Unboxing)

1. 박싱과 언박싱이란? 박싱(Boxing)박싱은 값 형식을 참조 형식으로 변환하는 과정입니다. 값 형식은 'int', 'float', 'double', 'struct' 등과 같은 데이터 타입이며, 이들은 스택(Stack) 메모리에 저장됩니다. 박싱을 통해 값 형식을 힙(Heap) 메모리에 할당된 객체(Object 타입)로 변환하여 참조 형식처럼 다룰 수 있게 됩니다. 언박싱(Unboxing)언박싱은 박싱된 객체를 다시 값 형식으로 변환하는 과정입니다. 힙에 저장된 객체에서 값을 꺼내와 스택에 저장합니다. 이 과정에서 타입 검사와 캐스팅이 필요합니다.    2. 작동 구조 및 예제 박싱의 작동 구조값 형식 데이터를 힙에 할당: 값 형식 데이터를 힙에 새로운 객체로 할당합니다.객체 생성: 이 객체는 해당 ..

CS 공부 2024.07.02

[C#] 해시셋 (HashSet)

1. 해시셋(HashSet)이란? 해시셋(HashSet)은 C#의 'System.Collections.Generic' 네임스페이스에 포함된 컬렉션 클래스 중 하나로, 해시 테이블을 기반으로 구현된 집합 데이터 구조입니다. 해시셋은 중복되지 않은 요소들의 모임을 관리하는데 최적화되어 있으며, 빠른 탐색, 추가 및 삭제 작업을 제공합니다. 이는 특히 고유한 값들만을 유지해야 하는 경우에 유용합니다.   2. 내부 작동 구조해시셋의 내부 구조는 해시 테이블을 기반으로 합니다. 해시 테이블은 키-값 쌍을 저장하는 데이터 구조로, 키를 해시 함수에 의해 해시 코드로 변환하고, 이 해시 코드를 인덱스로 사용하여 요소를 저장합니다. 해시 셋의 작동 원리는 다음과 같습니다. 해시 함수: 해시 함수는 객체의 고유한 해시..

CS 공부 2024.06.28

[C#] 링크드 리스트 (Linked List)

1. 링크드 리스트(Linked List)란? C#의 링크드 리스트(Linked List)는 데이터 구조의 한 현태로, 각 요소가 노드(Node)로 구성되며, 각 노드는 데이터와 다음 노드에 대한 참조를 포함합니다. 링크드 리스트는 동적 메모리 할당을 통해 크기가 가변적이며, 연속적인 메모리 주소에 저장되는 것이 아닌, 비 연속적으로 저장이 되며 이전, 다음 노드 정보를 통해 데이터를 연결합니다.이러한 구조로 배열과 달리 요소의 삽입 및 삭제가 용이하다는 장점이 있습니다.'System.Collections.Generic' 네임스페이스에 포함된 'LinkedList' 클래스를 사용하여 링크드 리스트를 구현할 수 있습니다.   2. 내부 작동 구조 링크드 리스트는 주로 세 가지 유형이 있습니다. 1. 단일 ..

CS 공부 2024.06.23

[C#] 딕셔너리 (Dictionary)

딕셔너리란?C#의 Dictionary 자료구조는 키와 값의 쌍의 데이터를 저장하는 제네릭 컬렉션입니다.이 자료구조는 System.Collections.Generic 네임스페이스에 포함되어 있으며, 키를 사용하여 값을 효율적으로 검색할 수 있습니다.  주요 특징 및 기능1. 키-값 쌍 저장:딕셔너리는 키와 값의 쌍을 저장합니다. 각 키는 고유하며, 중복될 수 없습니다.값은 중복될 수 있지만, 키는 유일해야 합니다. 2. 빠른 검색 속도:딕셔너리는 해시테이블을 사용하여 내부적으로 데이터를 저장하므로, 평균적으로 O(1)의 시간 복잡도로 키를 사용한 값 검색이 가능합니다. 3. 제네릭 타입 지원:Dictionary는 제네릭 타입을 지원하여, 타입 안정성과 성능을 보장합니다.예: Dictionary, Dicti..

CS 공부 2024.06.21

[C#] 리스트 (List)

1. C# List란?C#에서 List는 제네릭 컬렉션으로, C++에서 동적으로 크기가 조절되는 Vector와 유사합니다. List는 . Net의 ‘Systtem.Collections.Generic’ 네임스페이스에 속해 있으며, 다양한 데이터 타입을 저장하고 관리하는데 유용합니다.   2. 주요 특징제네릭 타입: 리스트는 제네릭 타입으로, 특정 타입의 데이터를 저장할 수 있습니다. 타입 안전성을 제공하여 컴파일 시간에 타입 오류를 방지할 수 있습니다.동적 크기 조정: 리스트는 내부적으로 배열을 사용하여 요소를 저장합니다. 리스트의 크기 조정은 다음과 같이 작동합니다. 1. 요소 추가 시 크기 조정: 리스트의 용량이 현재 요소의 수를 초과할 때, 새로운 요소를 추가하면 내부 배열의 크기가 두 배로 증가합니..

CS 공부 2024.06.16