본문 바로가기

워크

(112)
고정 크기 버퍼 (Fixed Size Buffers) 고정 크기 버퍼는 C#에서 일반적으로 사용되는 것은 아니지만, 성능이 중요한 시나리오나 특정 메모리 레이아웃이 필요할 때 유용합니다. 고정 크기 버퍼를 사용하려면 코드를 unsafe로 표시해야 합니다. 이는 포인터 연산이 가능한 영역이므로 주의가 필요합니다. 아래는 고정 크기 버퍼의 사용 예제입니다: using System; public struct FixedBufferExample { // 고정 크기 버퍼 정의. 이 버퍼는 100개의 int 값을 저장할 수 있습니다. public unsafe fixed int buffer[100]; } public class Program { public unsafe static void Main() { FixedBufferExample example = new Fix..
반복자 (Iterators) 반복자는 C#에서 컬렉션을 순회하기 위한 간결하고 깔끔한 방법을 제공합니다. 반복자는 yield return 및 yield break 키워드를 사용하여 정의되며, 이를 통해 foreach 문에서 사용할 수 있는 IEnumerable 또는 IEnumerator를 간단하게 구현할 수 있습니다. 아래는 간단한 반복자 예제입니다: using System; using System.Collections.Generic; public class IteratorExample { public static IEnumerable GetNumbersUpToTen() { for (int i = 1; i
익명 메서드 (Anonymous Methods) 익명 메서드는 메서드 이름이나 반환 타입 정의 없이 사용할 수 있는 메서드를 말합니다. 익명 메서드는 주로 이벤트 처리나 작은 기능을 위한 델리게이트에 사용됩니다. 익명 메서드는 delegate 키워드를 사용하여 정의됩니다. 아래는 익명 메서드를 사용하는 예제입니다: using System; using System.Collections.Generic; public class AnonymousMethodExample { // 델리게이트 선언 delegate void DisplayMessage(string message); public static void Main() { // 익명 메서드를 사용하여 델리게이트 인스턴스화 DisplayMessage messageDelegate = delegate(string..
Nullable 타입 Nullable 타입은 기본 값 타입이 null 값을 가질 수 있도록 확장시켜 줍니다. 주로 데이터베이스 작업이나 값이 설정되지 않은 상황을 처리할 때 유용합니다. 다음은 Nullable 타입의 사용 예제입니다: using System; public class NullableExample { public static void Main() { int? nullableInt = null; // Nullable의 축약형입니다. double? nullableDouble = 3.14; Console.WriteLine($"nullableInt has value? {nullableInt.HasValue}"); Console.WriteLine($"nullableDouble has value? {nullableDoubl..
제네릭 (Generics) 제네릭을 사용하는 기본적인 예제는 종종 콜렉션과 관련된 것들이 많이 보이지만, 조금 더 간단한 예제를 통해 제네릭의 기본적인 아이디어를 이해해보겠습니다. 제네릭을 활용한 간단한 Swap 함수: Swap 함수는 두 개의 변수의 값을 바꾸는 함수입니다. 제네릭을 사용하면, 이 함수를 어떤 타입의 변수들에 대해서도 사용할 수 있습니다. using System; public class GenericExample { // 제네릭 메서드 선언 public static void Swap(ref T a, ref T b) { T temp = a; a = b; b = temp; } public static void Main() { int x = 5, y = 10; Console.WriteLine($"Before Swap:..
C# 2.0의 주요 특징 안녕하세요! 오늘은 C#의 두 번째 버전, 즉 C# 2.0의 주요 특징들에 대해 살펴보겠습니다. C# 2.0은 .NET Framework 2.0과 함께 2005년에 출시되었는데요, 이 버전에서는 많은 개선사항과 새로운 기능들이 추가되었습니다. 그 중에서도 가장 중요하고 주요한 특징들을 함께 알아볼까요? 제네릭 (Generics) C# 2.0에서 도입된 제네릭은 타입의 안전성을 보장하면서도 코드의 재사용성을 크게 향상시켰습니다. 예를 들어, List 같은 제네릭 콜렉션은 어떤 타입의 목록이라도 관리할 수 있게 해주는데, 이는 타입 변환의 오버헤드나 박싱/언박싱의 필요성을 줄여줍니다. Nullable 타입 기본 값 타입에 null 값을 할당할 수 있게 해주는 기능입니다. int? myNullableInt =..
Versioning Support C# 및 .NET 프레임워크는 버전 관리(versioning)를 지원하는 기능을 포함하고 있습니다. 이는 라이브러리나 컴포넌트가 업데이트되더라도 기존의 응용 프로그램 코드에 부정적인 영향을 최소화하기 위한 것입니다. C#에서는 주로 인터페이스와 가상(Virtual) 메서드를 사용하여 버전 관리를 구현합니다. 예시: 먼저, 첫 번째 버전의 라이브러리를 살펴보겠습니다. // Version 1 of the library public interface ILogger { void Log(string message); } public class ConsoleLogger : ILogger { public void Log(string message) { Console.WriteLine(message); } } 위의 코..
위임(Delegates) 및 이벤트(Events) C#의 **위임(Delegates)**는 함수에 대한 참조를 나타내며, 콜백, 이벤트, 람다 표현식 등에서 사용됩니다. **이벤트(Events)**는 일반적으로 위임을 기반으로 하며, 특정 액션이나 상황이 발생할 때 알림을 보내는 데 사용됩니다. 1. 위임(Delegates) public delegate void MyDelegate(string message); // 위임의 선언 public class DemoClass { public void ShowMessage(string message) { Console.WriteLine($"Message from DemoClass: {message}"); } } class Program { static void Main() { DemoClass demo = ne..