2024/07 5

[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