반응형 C#66 재미로 만드는 로또 번호 생성기 #2_로또 API를 이용해서 당첨 번호 조회하기. 로또 당첨 번호 API는 특정 회차의 로또 당첨 정보를 제공하는 REST API입니다. 이 API는 대한민국 동행복권 로또 사이트에서 제공하는 것으로, 특정 회차의 데이터를 JSON 형식으로 반환합니다.API URLhttps://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo={회차번호}drwNo: 조회하려는 로또 회차 번호를 지정합니다. 예를 들어, 903회차를 조회하려면 drwNo=903을 사용합니다.응답 데이터 형식API의 응답은 JSON 형식으로 반환됩니다. 다음은 903회차를 조회했을 때의 예시 응답입니다:{ "totSellamnt": 96962255000, "returnValue": "success", "drwNoDate": "202.. 2025. 1. 5. 재미로 만드는 로또 번호 생성기 #1_중복 없는 번호 생성 로또 1등에 당첨될 확률은 약 1/8,145,060입니다. 아래는 C#으로 작성된, 1부터 45까지 중복 없이 6개의 숫자를 랜덤으로 뽑는 함수입니다. 이 함수는 HashSet를 사용하여 중복을 방지하고, Random 객체를 활용합니다.using System;using System.Collections.Generic;class Program{ static void Main() { // 랜덤 번호 생성 List lottoNumbers = GenerateLottoNumbers(); // 결과 출력 Console.WriteLine("랜덤 로또 번호: " + string.Join(", ", lottoNumbers)); } st.. 2025. 1. 4. C#의 Garbage Collection (GC) 개념 C#의 Garbage Collection (GC) 개념Garbage Collection(GC)은 .NET 런타임의 핵심 기능으로, 메모리를 자동으로 관리하여 개발자가 명시적으로 메모리를 해제하지 않아도 되도록 합니다. 이는 메모리 누수(Memory Leak)와 같은 문제를 방지하고, 애플리케이션의 안정성과 성능을 높이는 데 기여합니다.1. Garbage Collection의 작동 방식GC는 더 이상 참조되지 않는 객체를 탐지하여 해당 객체가 점유하고 있던 메모리를 회수합니다. 주요 작동 과정은 다음과 같습니다:객체 할당새 객체가 생성되면 관리 힙(Managed Heap)에 메모리가 할당됩니다.관리 힙은 CLR(Common Language Runtime)에 의해 관리됩니다.객체 사용객체는 메모리에 할당된 .. 2025. 1. 3. C#로 특정 폴더 내 파일 이름 변경 아래는 특정 폴더 내 모든 파일을 읽고, .exe 확장자를 가진 파일에서 파일 이름의 cam2라는 단어를 cam1로 바꾸는 C# 코드입니다.using System;using System.IO;class Program{ static void Main(string[] args) { // 특정 폴더 경로 설정 string folderPath = @"C:\Your\Folder\Path"; if (!Directory.Exists(folderPath)) { Console.WriteLine("지정된 폴더가 존재하지 않습니다."); return; } // 폴더 내 모든 파일 검색 s.. 2025. 1. 3. WNetUseConnection 함수의 리턴값과 오류 코드 목록 WNetUseConnection은 Windows API의 함수로, 네트워크 리소스에 연결을 설정하는 데 사용됩니다. 이 함수는 Mpr.dll 라이브러리에 있으며, C#에서는 P/Invoke를 사용하여 호출합니다. 함수의 반환값은 성공 또는 실패를 나타내며, 실패 시 다양한 오류 코드를 반환합니다.리턴값 목록다음은 WNetUseConnection 함수의 주요 반환값 리스트입니다:성공 코드NO_ERROR (0)연결이 성공적으로 완료되었습니다.일반 오류 코드ERROR_ACCESS_DENIED (5)액세스 권한이 거부되었습니다.ERROR_INVALID_HANDLE (6)잘못된 핸들이 전달되었습니다.ERROR_NOT_ENOUGH_MEMORY (8)메모리가 부족하여 작업을 완료할 수 없습니다.ERROR_BAD_NE.. 2025. 1. 3. C#에서 WORD, DWORD와 비트 연산을 처리하는 방법 C#에서 WORD, DWORD와 비슷한 개념을 처리하기 위한 방법과, 관련된 매크로를 C# 코드로 변환하는 예제를 제공하겠습니다. C#에서는 #define 매크로를 직접 사용할 수 없지만, 대신 메서드나 표현식으로 대체할 수 있습니다.1. WORD와 DWORD 데이터 타입C#에서 WORD는 보통 ushort (2바이트, 16비트)로, DWORD는 uint (4바이트, 32비트)로 사용됩니다.ushort: 16비트 부호 없는 정수uint: 32비트 부호 없는 정수2. LOWORD와 HIWORDLOWORD와 HIWORD는 DWORD에서 하위 16비트와 상위 16비트를 추출하는 매크로입니다. 이를 C#에서는 메서드로 변환할 수 있습니다.LOWORDpublic static ushort LOWORD(uint l).. 2024. 12. 31. C#에서 `Thread.Sleep(1~10)`을 사용하는 이유와 주의사항 C#에서 Thread.Sleep(1~10)을 while 문 내에서 사용하는 이유는 일반적으로 CPU 사용량을 조절하고, 다른 스레드나 프로세스가 실행될 시간을 확보하기 위함입니다. 이를 더 자세히 설명하면 다음과 같습니다:1. CPU 사용량 감소while 문은 기본적으로 조건이 만족하는 한 계속 반복됩니다. 만약 Thread.Sleep() 없이 while 문이 실행되면, CPU가 쉬지 않고 루프를 실행하며 100% 사용될 수 있습니다.Thread.Sleep(1~10)은 현재 스레드를 지정한 시간(1~10ms) 동안 일시 중단하여, CPU 자원을 다른 작업에 사용할 수 있도록 합니다.이는 busy-waiting 문제를 방지하며, 시스템의 효율성을 높이는 데 기여합니다.2. 다른 스레드/프로세스 실행 여유 .. 2024. 12. 31. C#에서 /unsafe 기능과 사용법 C#에서 /unsafe는 **"unsafe code"**를 활성화하는 컴파일러 옵션입니다. "unsafe" 코드는 메모리 주소를 직접 다루거나 포인터를 사용하는 코드로, 안전하지 않다고 간주되는 코드 영역을 의미합니다. C#은 기본적으로 안전한 언어로 설계되어 있기 때문에, 포인터 연산이나 메모리 접근에 대한 제약이 있지만, /unsafe 옵션을 사용하면 이러한 제약을 해제하고 비관리 메모리와 포인터를 사용할 수 있습니다.unsafe 코드란?Unsafe code는 다음과 같은 특징을 가집니다:포인터: unsafe 코드에서는 포인터를 사용할 수 있습니다. 이는 C, C++과 비슷한 방식으로 메모리 주소를 직접 다루는 방법입니다.메모리 주소 직접 접근: 포인터를 사용하면 객체나 배열의 메모리 주소를 직접 조.. 2024. 12. 30. C# CS0227 오류 설명 및 해결 방법 C#에서 CS0227 오류는 "스위치 문의 식이 값이 아니거나 조건식이 아닌 형식"이라는 오류 메시지로, 주로 switch 문에서 발생합니다. 이 오류는 switch 문에서 사용된 표현식이 유효한 값이 아니거나, 조건으로 사용할 수 없는 타입일 때 발생합니다.오류 원인CS0227 오류는 switch 문에 사용되는 표현식이 컴파일러가 처리할 수 있는 형식이 아닐 때 발생합니다. switch 문은 기본적으로 정수형 값(예: int, enum), 문자형 값(예: char), 문자열(예: string), 또는 bool 타입과 같은 몇 가지 특정한 타입만 허용합니다. 만약 switch 문에서 이러한 타입이 아닌 값을 사용하면 CS0227 오류가 발생합니다.예시 코드 (오류 발생)string value = "Hel.. 2024. 12. 30. C# ThreadPool: 스레드 관리와 작업 처리 최적화 C#의 ThreadPoolThreadPool은 C#의 .NET Framework와 .NET Core에서 제공하는 기능으로, 작업(Work Items)을 처리하기 위해 재사용 가능한 스레드 풀을 관리하는 클래스입니다. System.Threading.ThreadPool 네임스페이스에 정의되어 있으며, 애플리케이션의 성능을 높이고 스레드 관리의 복잡성을 줄이는 데 사용됩니다.ThreadPool의 주요 개념스레드 풀(Thread Pool)이란?스레드 풀은 **미리 생성된 스레드의 풀(pool)**입니다. 새 작업 요청이 있을 때마다 새 스레드를 만드는 대신, 기존에 생성된 스레드를 재사용합니다.이렇게 함으로써 스레드 생성 및 삭제로 인한 비용을 줄이고, 자원 낭비를 방지합니다.ThreadPool의 작동 방식작업.. 2024. 12. 30. 이전 1 2 3 4 5 6 7 다음 반응형