본문 바로가기

분류 전체보기

(150)
LINQ (Language Integrated Query) LINQ (Language Integrated Query) LINQ는 C#에서 데이터를 쿼리하는 강력한 기능입니다. .NET의 다양한 데이터 소스 (컬렉션, 데이터베이스, XML 등) 에 대한 쿼리를 작성할 수 있게 해줍니다. LINQ는 일반적으로 선언적 형식으로 쿼리를 작성하게 해주며, C#과 자연스럽게 통합되어 있습니다. 아래는 LINQ의 몇 가지 기본적인 예제입니다. 기본적인 List 쿼리: List numbers = new List { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; var evenNumbers = from num in numbers where num % 2 == 0 select num; foreach (var num in evenNumbers) { Console.Wri..
Auto-Implemented Properties Auto-Implemented Properties Auto-Implemented Properties는 C# 3.0에서 도입된 기능으로, 프로퍼티를 정의할 때 백업 필드를 직접 작성하지 않아도 되는 기능입니다. 기존에는 프로퍼티의 백업 필드를 직접 정의하고, getter와 setter를 통해 해당 필드에 접근하게 되었지만, Auto-Implemented Properties를 통해 이러한 과정을 간소화할 수 있습니다. 기존 방식: private string _name; public string Name { get { return _name; } set { _name = value; } } Auto-Implemented Properties 방식: public string Name { get; set; } 이렇..
C# 3.0의 주요 특징 안녕하세요! 오늘은 C#의 버전 중 하나인 C# 3.0의 주요 특징과 기능에 대해 이야기하려고 합니다. C# 3.0은 2007년에 .NET Framework 3.5와 함께 출시되었으며, 여러 혁신적인 기능을 도입함으로써 개발자들에게 큰 관심을 받았습니다. 그렇다면 C# 3.0의 주요한 기능들은 무엇일까요? 함께 살펴봅시다! 1. Auto-Implemented Properties 기존의 C#에서는 프로퍼티를 정의할 때 백업 필드를 직접 작성해야 했습니다. 그러나 C# 3.0에서는 auto-implemented properties 기능을 도입함으로써 코드를 더 간결하게 작성할 수 있게 되었습니다. public string Name { get; set; } 2. LINQ (Language Integrated ..
부분 타입 (Partial Types) 부분 타입 (Partial Types)은 C#에서 큰 클래스나 구조체를 논리적인 섹션으로 나누어 여러 파일에 분할하여 정의할 수 있게 해주는 기능입니다. partial 키워드를 사용하여 표현됩니다. 이는 특히 자동 생성된 코드와 사용자 코드를 분리하고자 할 때 유용합니다. 아래는 부분 타입의 간단한 예시입니다: File: MyClass_Part1.cs public partial class MyClass { public void Method1() { Console.WriteLine("Method1 from Part1"); } } File: MyClass_Part2.cs public partial class MyClass { public void Method2() { Console.WriteLine("Met..
Covariance와 Contravariance C#에서의 공변성(Covariance) 및 반공변성(Contravariance)은 인터페이스 및 델리게이트를 사용할 때 타입 변환의 안정성을 허용하는 방식입니다. Covariance (공변성) 공변성은 변환된 타입에서 원래 타입으로의 일방향 변환을 허용합니다. 예를 들어, IEnumerable는 IEnumerable로 안전하게 변환될 수 있습니다. using System; using System.Collections.Generic; class Base { } class Derived : Base { } public class CovarianceExample { public static void Main() { List derivedList = new List(); IEnumerable bases = de..
고정 크기 버퍼 (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..