CSharp/CSharp 문법65 Dictionary에서 값으로 키 찾기 Dictionary에서 값으로 키 찾기C#의 Dictionary는 키를 통해 값을 찾는 데 최적화되어 있습니다. 하지만 특정 값을 기준으로 키를 찾아야 할 때가 있습니다. 이 경우 LINQ를 사용하면 깔끔하게 해결할 수 있습니다. using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { var fruits = new Dictionary() { {"A", "Apple"}, {"B", "Banana"}, {"C", "Cherry"}, {"D", "Duri.. 2025. 8. 13. Enumerable.Range()와 Select()를 활용해 숫자 리스트와 계산 결과 만들기 Enumerable.Range()와 Select()를 활용해 숫자 리스트와 계산 결과 만들기 Enumerable.Range(start, count) 메서드를 사용하면 정수 시퀀스를 쉽고 깔끔하게 생성할 수 있습니다. 여기에 Select()를 결합하면 간단한 수열 연산도 한 줄로 처리할 수 있어 매우 유용합니다. using System; using System.Linq; class Program { static void Main() { var squares = Enumerable.Range(1, 5) .Select(n => n * n); Console.WriteLine("1부터 5까지의 제곱수:"); .. 2025. 8. 7. using var 선언으로 자원을 자동 해제하는 간결한 패턴 using var 선언으로 자원을 자동 해제하는 간결한 패턴 C# 8.0 이상에서는 using 블록 대신 using var 선언만으로도 IDisposable 객체의 리소스를 자동 해제할 수 있습니다. 코드가 더 깔끔해지고 들여쓰기 깊이도 줄여 유지보수성을 높일 수 있는 실무 팁입니다. using System; using System.IO; using Systehttp://m.Threading.Tasks;class Program { static async Task Main() { using var client = new Systehttp://m.Net.Http.HttpClient(); Console.WriteLine("웹 요청 중..."); str.. 2025. 8. 6. ??= Null 병합 할당 연산자 활용하기 ??= Null 병합 할당 연산자 활용하기 C# 8.0에서 도입된 ??= 연산자는 왼쪽 피연산자가 null일 경우에만 오른쪽 값을 할당합니다. 이 연산자는 객체 초기화나 기본값 설정에 자주 사용됩니다. List? names = null; // ??=를 사용하여 null일 경우에만 새 리스트를 할당 names ??= new List(); names.Add("김원호"); Console.WriteLine(string.Join(", ", names)); 코드 간결화: if 문 없이도 기본값 설정 가능 가독성 향상: null 체크와 할당을 한 줄에 처리 NRE(NullReferenceException) 방지에 유용 서비스 클래스에서 DI 주입되지 않은 인스턴스에 기본 구현 제공 시 ViewModel에서 nul.. 2025. 8. 5. string.Join()으로 문자열 배열 간단하게 결합하기 string.Join()으로 문자열 배열 간단하게 결합하기문자열 배열이나 리스트를 하나의 문자열로 합치려면 string.Join() 메서드가 가장 간편하고 안전한 방법입니다. 반복문 없이도 한 줄로 처리할 수 있어 코드가 깔끔해집니다. using System; class Program { static void Main() { string[] fruits = { "사과", "바나나", "포도" }; string result = string.Join(", ", fruits); Console.WriteLine("과일 목록: " + result); } } 출력 결과 과일 목록: 사과, 바나나, 포도 string.Join(separator, ar.. 2025. 8. 4. record 타입으로 불변 객체 선언하기 record 타입으로 불변 객체 선언하기 record는 C# 9.0 이상에서 도입된 참조형 타입으로, 기본적으로 불변성을 유지하면서 값 기반 비교를 지원합니다. 객체를 불변으로 유지하면서도 편리하게 사용할 수 있어, DTO, 설정 객체 등에 적합합니다. public record User(string Name, int Age); class Program { static void Main() { var user1 = new User("Kim", 30); var user2 = user1 with { Age = 31 }; Console.WriteLine(user1); // User { Name = Kim, Age = 30 } Conso.. 2025. 8. 1. switch 표현식으로 깔끔한 조건 분기 처리 switch 표현식으로 깔끔한 조건 분기 처리 C# 8.0부터 도입된 switch 표현식은 기존 switch 문보다 더 간결하고 안전한 방식으로 조건 분기를 처리할 수 있게 해줍니다. 특히 enum, 튜플, 패턴 매칭 등과 함께 사용하면 코드의 가독성과 유지보수성이 크게 향상됩니다. enum UserRole { Admin, Manager, Guest } class Program { static void Main() { var role = UserRole.Manager; string access = role switch { UserRole.Admin => "모든 권한 허용", UserRole.Man.. 2025. 7. 25. int.TryParse()로 안전한 숫자 변환 처리 int.TryParse()로 안전한 숫자 변환 처리사용자 입력이나 외부 데이터에서 숫자 문자열을 변환할 때, int.Parse() 사용은 예외 발생 위험이 있습니다. 이럴 땐 int.TryParse()를 사용하면 예외 없이 안전하게 변환 여부를 체크할 수 있어 더 안정적입니다. using System; class Program { static void Main() { Console.Write("숫자를 입력하세요: "); string input = Console.ReadLine() ?? ""; if (int.TryParse(input, out int value)) Console.WriteLine($"변환 성공: {value.. 2025. 7. 22. Null 병합 연산자(??)로 안전하고 간결한 기본값 처리하기 Null 병합 연산자(??)로 안전하고 간결한 기본값 처리하기 ?? 연산자는 왼쪽 피연산자가 null일 경우 오른쪽 값을 반환하는 C#의 간단하고 강력한 기능입니다. 초보자에게 매우 유용하며, 코드의 가독성과 안정성을 동시에 높일 수 있습니다. using System; class Program { static void Main() { string? name = null; // Null 병합 연산자를 사용해 기본값 설정 string result = name ?? "기본값"; Console.WriteLine(result); } } name이 null이면 "기본값"을 반환합니다. 주로 설정값, 사용자 입력값, API 응답 처리.. 2025. 7. 21. Span<T>를 활용한 고성능 문자열 처리 Span를 활용한 고성능 문자열 처리 Span는 메모리 할당 없이 배열, 문자열, 버퍼 등의 슬라이스를 다룰 수 있게 해주는 고급 기능입니다. 특히 문자열 처리, 파싱, 버퍼 조작 등에서 성능을 극대화할 수 있습니다. 단, Span는 스택 메모리에서 동작하므로 힙에 저장할 수 없고 async 메서드에서 사용할 수 없습니다. using System; class Program { static void Main() { string csv = "apple,banana,cherry"; ReadOnlySpan span = csv.AsSpan(); int index = span.IndexOf(','); ReadOnlySpan firstIt.. 2025. 7. 18. async Task Main()으로 콘솔 비동기 코딩 깔끔하게! async Task Main()으로 콘솔 비동기 코딩 깔끔하게! C# 7.1 이후부터는 Main 메서드도 async Task로 선언할 수 있어, 콘솔 앱에서 비동기 코드를 자연스럽게 사용할 수 있습니다. 이전에는 GetAwaiter().GetResult() 같은 번거로운 방식이 필요했지만, 이제는 await를 바로 사용할 수 있어 가독성과 안정성이 향상됩니다. using System; using Systehttp://m.Net.Http;using Systehttp://m.Threading.Tasks;class Program { static async Task Main() { using var client = new HttpClient(); Console.Wr.. 2025. 7. 16. ?? 널 병합 연산자 활용하기 ?? 널 병합 연산자 활용하기 널 병합 연산자 ??는 왼쪽 피연산자가 null이 아니면 그 값을, null이면 오른쪽 값을 반환합니다. 기본값 설정이나 널 가능(reference) 타입을 다룰 때 코드가 한결 깔끔해지고 안전해집니다. using System; class Program { static void Main() { string? userInput = null; // userInput이 null일 경우 "기본값"을 대입 string result = userInput ?? "기본값"; Console.WriteLine(result); // 기존 변수에 직접 null 병합 할당 userInput ??.. 2025. 7. 14. LINQ의 GroupBy로 데이터 그룹화 쉽게 하기 LINQ의 GroupBy로 데이터 그룹화 쉽게 하기 C#의 LINQ를 사용하면 리스트나 컬렉션을 조건에 따라 그룹화할 수 있습니다. GroupBy() 메서드는 데이터를 특정 키로 그룹화하여 카테고리별로 분류하거나 통계를 낼 때 매우 유용합니다. using System; using System.Collections.Generic; using System.Linq; class Program { class Product { public string Category { get; set; } public string Name { get; set; } } static void Main() { List products = new Li.. 2025. 7. 9. string.IsNullOrWhiteSpace()로 문자열 검증을 더 견고하게! string.IsNullOrWhiteSpace()로 문자열 검증을 더 견고하게!string.IsNullOrWhiteSpace()는 문자열이 null, 빈 문자열(""), 또는 공백 문자(스페이스, 탭 등)만으로 구성된 경우 true를 반환합니다. 사용자 입력 검증이나 API 데이터 처리 시 안전하고 간편하게 조건을 검사할 수 있는 유용한 메서드입니다. using System; class Program { static void Main() { string input1 = null; string input2 = ""; string input3 = " "; string input4 = "Hello"; Console... 2025. 7. 8. TryParse()로 안전하게 숫자 변환하기 TryParse()로 안전하게 숫자 변환하기 int.Parse()는 문자열이 숫자가 아닐 경우 예외를 발생시킬 수 있습니다. 반면 int.TryParse()는 예외 없이 변환을 시도하며, 실패 여부를 bool 값으로 반환합니다. 이 메서드를 사용하면 안전한 형 변환이 가능해져 프로그램이 중단되는 문제를 방지할 수 있습니다. using System; class Program { static void Main() { string userInput = "123"; if (int.TryParse(userInput, out int result)) { Console.WriteLine($"변환 성공: {result}"); .. 2025. 7. 7. Span<T>을 이용한 고성능 문자열 처리 Span을 이용한 고성능 문자열 처리 C#의 Span는 메모리 할당 없이 배열이나 문자열의 일부분을 안전하게 다룰 수 있게 해주는 고성능 구조체입니다. 특히 문자열을 조작하거나 파싱할 때 Substring()을 대체해 GC 부담을 줄이고 빠른 실행 속도를 제공합니다. using System; class Program { static void Main() { string input = "2025-07-04"; Span dateSpan = input.AsSpan(); var year = dateSpan.Slice(0, 4); var month = dateSpan.Slice(5, 2); var day = dateSpan... 2025. 7. 4. LINQ의 Where()와 Select()를 활용한 조건 필터링 및 변환 LINQ의 Where()와 Select()를 활용한 조건 필터링 및 변환 LINQ는 C#에서 컬렉션 데이터를 필터링, 정렬, 변환하는 데 매우 강력한 기능을 제공합니다. 그중 Where()는 조건에 맞는 항목만 선택하고, Select()는 각 항목을 변환하는 데 사용됩니다. using System; using System.Linq; using System.Collections.Generic; class Program { static void Main() { List numbers = new List { 1, 2, 3, 4, 5, 6 }; var evenSquares = numbers .Where(n => n % 2 == 0) .. 2025. 7. 3. Dictionary<TKey, TValue>를 효율적으로 초기화하는 방법 Dictionary를 효율적으로 초기화하는 방법 Dictionary는 키-값 쌍을 저장하는 데 매우 유용한 컬렉션입니다. C#에서는 컬렉션 이니셜라이저(Collection Initializer)를 사용해 코드 가독성을 높이면서 간결하게 초기화할 수 있습니다. using System; using System.Collections.Generic; class Program { static void Main() { var countries = new Dictionary { ["KR"] = "Korea", ["US"] = "United States", ["JP"] = "Japan" }; .. 2025. 7. 2. string.IsNullOrWhiteSpace()로 안전한 문자열 검증하기 string.IsNullOrWhiteSpace()로 안전한 문자열 검증하기문자열이 null, 빈 문자열(""), 또는 공백 문자만 포함되어 있는지를 한 번에 확인할 수 있는 메서드입니다. 기존에는 여러 조건문을 써야 했지만, 이 메서드를 사용하면 간결하고 명확한 코드 작성이 가능합니다. using System; class Program { static void Main() { string input1 = null; string input2 = ""; string input3 = " "; string input4 = "CSharp"; Console.WriteLine(CheckInput(input1)); // fal.. 2025. 7. 1. string.Format() 대신 C# 문자열 보간(string interpolation) 사용하기 string.Format() 대신 C# 문자열 보간(string interpolation) 사용하기 C# 6.0부터는 $ 기호를 사용한 문자열 보간 방식이 도입되어 string.Format()보다 더 직관적이고 가독성 높은 문자열 조합이 가능합니다. using System; class Program { static void Main() { string name = "김씨샵"; int age = 35; string message = $"안녕하세요, 제 이름은 {name}이고 나이는 {age}살입니다."; Console.WriteLine(message); } } $"텍스트 {변수}" 형태로 사용합니다. 중괄호 {} 안에 직접 표.. 2025. 6. 24. 이전 1 2 3 4 다음