CSharp47 Stopwatch로 코드 실행 시간 측정하기 Stopwatch로 코드 실행 시간 측정하기 성능을 측정하거나 특정 블록의 실행 시간을 확인하고 싶을 때, System.Diagnostics.Stopwatch 클래스를 사용하면 정확한 시간 측정이 가능합니다. using System; using System.Diagnostics; using System.Threading; class Program { static void Main() { Stopwatch sw = new Stopwatch(); sw.Start(); Thread.Sleep(1500); // 테스트용으로 1.5초 대기 sw.Stop(); Console.WriteLine($"실행 시간: {sw.Elapse.. 2025. 5. 7. string.Contains()로 문자열 포함 여부 간단히 확인하기 string.Contains()로 문자열 포함 여부 간단히 확인하기 C#의 string.Contains() 메서드를 사용하면 텍스트 내에 특정 문자열이 포함되어 있는지를 간단하고 직관적으로 검사할 수 있습니다. 검색, 필터링, 조건 분기 등에 유용하게 사용됩니다. using System; class Program { static void Main() { string message = "안녕하세요, 모노솔루션입니다."; if (message.Contains("모노")) { Console.WriteLine("✅ 회사명이 포함되어 있습니다."); } else { .. 2025. 5. 5. List<T>.Find()로 조건에 맞는 첫 번째 항목 찾기 List.Find()로 조건에 맞는 첫 번째 항목 찾기 List의 Find() 메서드는 조건을 만족하는 첫 번째 요소를 간편하게 찾을 수 있는 기능입니다. 복잡한 반복문 없이도 원하는 항목을 빠르게 추출할 수 있어 실용적입니다. using System; using System.Collections.Generic; class Program { static void Main() { List names = new List { "John", "Jane", "Steve", "Sara" }; string result = names.Find(name => name.StartsWith("S")); Console.WriteLine("조건에 맞는 이름: " +.. 2025. 5. 1. Array.Exists()로 배열 조건 빠르게 검사하기 Array.Exists()로 배열 조건 빠르게 검사하기 C#의 Array.Exists() 메서드는 배열에 특정 조건을 만족하는 요소가 하나라도 존재하는지 간단하게 검사할 수 있는 방법입니다. 불필요한 반복문 없이 조건 검사를 간결하게 표현할 수 있어 유용합니다. using System; class Program { static void Main() { int[] numbers = { 3, 7, 9, 12, 15 }; bool hasEven = Array.Exists(numbers, n => n % 2 == 0); Console.WriteLine(hasEven ? "✅ 배열에 짝수가 있습니다." : ".. 2025. 4. 30. string.IsNullOrWhiteSpace()로 문자열 안전하게 검사하기 string.IsNullOrWhiteSpace()로 문자열 안전하게 검사하기 C#에서는 string.IsNullOrWhiteSpace() 메서드를 사용하면 문자열이 null, 빈 문자열("") 또는 공백만 있는 경우를 한 번에 검사할 수 있습니다. 조건문을 깔끔하게 만들고, 널 포인터 예외도 예방할 수 있어 매우 유용합니다 using System; class Program { static void Main() { string input = " "; if (string.IsNullOrWhiteSpace(input)) { Console.WriteLine("⚠️ 입력값이 비어있거나 공백입니다."); } .. 2025. 4. 29. File.ReadAllText()로 파일 전체 읽기 File.ReadAllText()로 파일 전체 읽기 C#에서는 File.ReadAllText() 메서드를 사용하면 텍스트 파일 전체를 한 번에 간단하게 읽어올 수 있습니다. 짧은 텍스트 파일을 빠르게 읽어야 할 때 매우 유용합니다. using System; using System.IO; class Program { static void Main() { string filePath = "sample.txt"; if (File.Exists(filePath)) { string content = File.ReadAllText(filePath); Console.WriteLine("파일 내용:\n" + conte.. 2025. 4. 28. Guid로 전 세계에서 유일한 값 생성하기 Guid로 전 세계에서 유일한 값 생성하기 Guid(Globally Unique Identifier)는 거의 충돌이 발생하지 않는 고유 식별자를 생성할 수 있어, 데이터베이스 키, 파일명, 트랜잭션 ID 등 다양한 곳에 활용됩니다. using System; class Program { static void Main() { Guid id = Guid.NewGuid(); Console.WriteLine($"새로운 GUID: {id}"); } } 출력 결과 예시 새로운 GUID: 3f2504e0-4f89-11d3-9a0c-0305e82c3301 Guid.NewGuid()를 호출하면 새로운 고유 식별자가 생성됩니다. 128비트 크기로 구성되어, 전 세계 어디.. 2025. 4. 26. DateTime과 TimeSpan으로 시간 계산하기 DateTime과 TimeSpan으로 시간 계산하기 C#의 DateTime과 TimeSpan은 날짜 및 시간 관련 작업을 매우 정밀하고 직관적으로 처리할 수 있도록 도와줍니다. 기간 계산, 남은 시간 체크, 타임스탬프 기록 등에 자주 사용됩니다. using System; class Program { static void Main() { DateTime start = new DateTime(2025, 4, 1); DateTime end = DateTime.Now; TimeSpan duration = end - start; Console.WriteLine($"시작일: {start}"); Console.WriteLine(.. 2025. 4. 25. Environment 클래스로 시스템 정보 가져오기 Environment 클래스로 시스템 정보 가져오기 C#의 System.Environment 클래스는 운영 체제, 시스템 경로, 사용자 정보 등 다양한 환경 정보를 손쉽게 가져올 수 있도록 도와줍니다. 로그 기록, 시스템 체크, 경로 자동 설정 등에 매우 유용합니다. using System; class Program { static void Main() { Console.WriteLine("OS 버전: " + Environment.OSVersion); Console.WriteLine("사용자 이름: " + Environment.UserName); Console.WriteLine("머신 이름: " + Environment.MachineName);.. 2025. 4. 24. readonly struct로 불변 값 타입 만들기 readonly struct로 불변 값 타입 만들기 C#의 readonly struct는 값 타입(Struct)의 불변성을 보장해주며, 성능과 안정성 모두를 고려할 수 있는 구조입니다. 수학, 그래픽, 좌표계 등에서 많이 활용됩니다. using System; public readonly struct Point { public int X { get; } public int Y { get; } public Point(int x, int y) { X = x; Y = y; } public double Length => Math.Sqrt(X * X + Y * Y); } class Program { static void Main() .. 2025. 4. 23. switch 표현식으로 깔끔한 조건 분기 구현하기 switch 표현식으로 깔끔한 조건 분기 구현하기 C# 8.0부터 지원되는 switch 표현식은 기존의 switch문보다 더 간결하고 가독성 좋은 조건 분기 방식입니다. 조건마다 값을 반환해야 할 때 매우 유용하며, 함수형 스타일 코딩에 적합합니다. using System; class Program { static void Main() { string role = "admin"; string permission = role switch { "admin" => "모든 권한", "user" => "일반 권한", "guest" => "읽기 전용", _ => "알 수.. 2025. 4. 22. async/await로 비동기 프로그래밍 구조화하기 async/await로 비동기 프로그래밍 구조화하기 async와 await는 C#에서 비동기 작업을 처리하는 핵심 도구입니다. UI 응답성을 유지하거나, I/O 작업을 효율적으로 처리하고 싶다면 반드시 알아야 할 기능입니다. using System; using Systehttp://m.Net.Http;using Systehttp://m.Threading.Tasks;class Program { static async Task Main() { Console.WriteLine("데이터 가져오는 중..."); string data = await GetDataAsync(); Console.WriteLine("결과: " + data.Substring(0.. 2025. 4. 21. List<T>와 AddRange()로 다중 요소 추가하기 List와 AddRange()로 다중 요소 추가하기\ C#의 List는 유연하고 자주 쓰이는 컬렉션 타입 중 하나입니다. 여러 개의 데이터를 한 번에 추가할 때는 Add() 대신 AddRange()를 사용하여 효율적으로 처리할 수 있습니다. using System; using System.Collections.Generic; class Program { static void Main() { List fruits = new List { "사과", "바나나" }; List moreFruits = new List { "포도", "복숭아", "수박" }; fruits.AddRange(moreFruits); Console.WriteLine.. 2025. 4. 18. params 키워드로 가변 인자 받기 params 키워드로 가변 인자 받기C#의 params 키워드를 사용하면 인자 개수에 제한 없이 배열처럼 값을 전달할 수 있어 유연한 메서드 구현이 가능합니다. 오버로드 없이도 다양한 수의 인자를 처리할 수 있어 코드가 간결해집니다. using System; class Program { static void Main() { PrintNumbers(1, 2, 3); PrintNumbers(10, 20); PrintNumbers(); // 인자 없이도 호출 가능 } static void PrintNumbers(params int[] numbers) { Console.WriteLine("입력된 숫자들: " + s.. 2025. 4. 17. enum을 활용한 의미 있는 상수 집합 정의 enum을 활용한 의미 있는 상수 집합 정의 enum(열거형)은 관련된 상수 값을 이름으로 표현할 수 있게 해주는 C#의 기능입니다. 의미 있는 이름으로 코드를 작성하면 가독성, 유지보수성이 모두 좋아집니다. using System; enum OrderStatus { Pending, Processing, Shipped, Delivered, Cancelled } class Program { static void Main() { OrderStatus status = OrderStatus.Shipped; Console.WriteLine($"주문 상태: {status}"); if (status == OrderSta.. 2025. 4. 16. string interpolation으로 문자열 조합 간결하게 하기 string interpolation으로 문자열 조합 간결하게 하기C#의 문자열 보간(String Interpolation) 기능을 사용하면 문자열을 더 간단하고 가독성 좋게 조합할 수 있습니다. 기존의 + 연산이나 string.Format()보다 더 직관적인 문법을 제공합니다. using System; class Program { static void Main() { string name = "홍길동"; int age = 21; string message = $"안녕하세요, 제 이름은 {name}이고 나이는 {age}살입니다."; Console.WriteLine(message); } } 출력 결과 안녕하세요, 제 이름은 홍.. 2025. 4. 15. try-catch-finally 구문으로 예외 처리 완전 정복! try-catch-finally 구문으로 예외 처리 완전 정복! C#에서는 프로그램 실행 중 예외 상황이 발생할 수 있으며, 이를 try-catch-finally 구문으로 안전하게 처리할 수 있습니다. 오류를 잡고, 리소스를 정리하고, 사용자에게 친절한 메시지를 제공하는 것은 프로 개발자의 기본입니다! using System; class Program { static void Main() { try { Console.Write("숫자를 입력하세요: "); int number = int.Parse(Console.ReadLine()); Console.WriteLine($"입력한 숫자: {number}".. 2025. 4. 14. Tuple을 활용한 다중 값 반환 Tuple을 활용한 다중 값 반환 C#에서는 Tuple을 사용하여 메서드에서 여러 값을 간단하게 반환할 수 있습니다. 클래스를 만들 필요 없이 깔끔한 반환 구조를 만들 수 있어 매우 유용합니다. using System; class Program { static void Main() { var (sum, product) = Calculate(4, 5); Console.WriteLine($"합계: {sum}, 곱셈: {product}"); } static (int, int) Calculate(int a, int b) { return (a + b, a * b); } } Tuple은 여러 값을 한 번에 반환할 때 사용되며 (.. 2025. 4. 12. lock 키워드로 멀티스레딩 동기화 lock 키워드로 멀티스레딩 동기화 멀티스레드 환경에서는 하나의 리소스를 여러 스레드가 동시에 접근할 수 있기 때문에 데이터 무결성을 유지하려면 동기화가 필수입니다. C#의 lock 키워드를 사용하면 간단하게 **임계 구역(Critical Section)**을 만들어 스레드 충돌을 방지할 수 있습니다. using System; using System.Threading; class Counter { private int _count = 0; private readonly object _lock = new object(); public void Increment() { lock (_lock) { _count++; .. 2025. 4. 11. ??= 널 병합 할당 연산자 ??= 널 병합 할당 연산자C# 8.0부터 도입된 ??= 연산자는 값이 null일 경우에만 할당을 수행합니다. 조건문 없이 깔끔하게 기본값을 설정할 수 있어 가독성과 생산성을 모두 향상시킬 수 있습니다. using System; class Program { static void Main() { string name = null; name ??= "기본 이름"; Console.WriteLine($"사용자 이름: {name}"); } } 출력 결과 사용자 이름: 기본 이름 ● ??=는 변수에 값이 null일 경우에만 오른쪽 값을 할당합니다. ● if (x == null) x = y;를 더 간결하게 표현한 것과 동일합니다. ● 코드 흐름을 깔끔.. 2025. 4. 10. 이전 1 2 3 다음