분류 전체보기 44

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

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

CS 공부 2024.08.09

[C#] 클래스와 구조체 (Class & Structure)

C#은 객체 지향 프로그래밍(OOP)을 기반으로 하는 언어로, 클래스와 구조체는 데이터를 정의하고 조작하는 두 가지 주요 방식 입니다. 둘 다 데이터와 메서드를 포함할 수 있지만, 사용되는 방식과 목적에는 중요한 차이점이 있습니다.   1. 클래스(Class)클래스는 객체 지향 프로그래밍의 핵심 개념으로, 객체의 청사진(buleprint) 역할을 합니다. 클래스는 데이터(필드)와 기능(메서드)을 포함할 수 있으며, 이를 통해 객체를 생성할 수 있습니다. 참조 타입: 클래스는 참조 타입입니다. 객체는 힙(heap) 메모리에 할당되며, 객체에 대한 참조(reference)가 변수에 저장됩니다.상속 가능: 상속을 통해 다른 클래스의 멤버를 확장할 수 있습니다.생성자: 생성자를 통해 객체가 생성될 때 초기화할 ..

CS 공부 2024.08.04

[Unity] 코루틴(Coroutine)

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

Unity 공부 2024.08.04

[C#] 대리자 (Delegate)

1. 대리자란? C#에서 대리자는(Delegate)는 특정 메서드를 참조하는 형식의 안전한 객체입니다. 이는 C++의 함수 포인터와 비슷하지만, 형식 안전성(type-safety)을 보장하고 객체 지향 프로그래밍 개념을 따릅니다. 대리자는 메서드를 변수처럼 다룰 수 있게 해주며, 메서드를 매개변수로 전달하거나 반환할 수 있게 해줍니다.  대리자의 선언 및 사용 방법 1. 대리자 선언public delegate void MyDelegate(string message); //대리자 선언 2. 대리자 인스턴스 생성MyDelegate del = new MyDelegate(MethodToCall); 3. 대리자 호출del("Hello, World!"); 4. 대리자를 통한 콜백 사용public void Metho..

CS 공부 2024.07.27

[C#] 메모리 구조

메모리 관리는 소프트웨어 성능 및 안정성에 중요한 요소이며, 개발자가 잘 이해하고 코드를 작성하게 되면 더 효율적이고 안정적인 코드를 작성할 수 있습니다. C#에서는 메모리 관리가 주로 가비지 컬렉터(Garbage Collector)에 의해 자동으로 처리되지만, 메모리 구조를 이해하는 것은 필수적입니다. 이 글에서는 C# 프로그램의 메모리 구조에 대해 살펴보겠습니다. 메모리 구조는 코드가 실행되는 동안 데이터가 어떻게 저장되고 관리되는지를 설명하는데, 이는 크게 네가지 주요 영역으로 나뉩니다.  코드 영역(Code Segment), 데이터 영역(Data Segment), 스택(Stack), 힙(Heap)코드 영역은 프로그램의 실행 코드를 저장합니다.데이터 영역은 초기화된 데이터와 초기화되지 않은 데이터를..

CS 공부 2024.07.22

[C#] 가비지 컬렉터 (Garbage Collector, GC)

C#은 메모리 관리를 자동화하는 가비지 컬렉터(Garbage Collector, GC)를 사용합니다. 가비지 컬렉터는 프로그래머가 직접 메로리를 관리하지 않고도 메모리 누수를 방지하고 효율적인 메모리 관리를 가능하게 합니다. 이번 글에서는 C# 가비지 컬렉터의 개념과 동작 원리, 그리고 가비지 컬렉션을 최소화 하는 방법에 대해 알아보겠습니다.  1. C# 가비지 컬렉터(GC)란?가비지 컬렉터는 더 이상 사용되지 않는 객체를 자동으로 식별하고 해제하여 메모리를 회수하는 메커니즘입니다. C#에서 가비지 컬렉터는 .NET 프레임워크의 일부로, 개발자가 메모리 관리에 신경쓰지 않아도 되도록 합니다. 가비지 컬렉터는 힙(heap) 영역에서 동작하며, 힙은 프로그램 실행 중 동적으로 할당되는 메모리 공간입니다.  ..

CS 공부 2024.07.15

[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