본문 바로가기
반응형

C#46

C# internal: 어셈블리 내 접근 제한자 internal 키워드는 C#에서 접근 제한자를 나타내며, 같은 어셈블리 내에서만 접근이 허용되는 멤버를 정의할 때 사용됩니다. internal 멤버는 동일한 프로젝트 내의 다른 클래스에서는 접근 가능하지만, 다른 프로젝트에서 이 어셈블리를 참조하는 경우에는 접근할 수 없습니다.internal의 주요 특징어셈블리 수준 접근 제어같은 프로젝트 내에서는 자유롭게 접근 가능.다른 프로젝트에서는 접근 불가.사용 위치클래스, 메서드, 속성, 필드 등 다양한 멤버에 적용 가능.기본 접근 수준네임스페이스 내에서 선언된 클래스의 기본 접근 수준은 internal입니다(명시하지 않을 경우).internal 키워드 예제1. 기본적인 사용internal 키워드를 사용하여 클래스와 메서드의 접근 수준을 제한하는 예제입니다./.. 2025. 1. 10.
스레드_스레드 상태 조사_thread state C# 스레드 상태 조사 강좌C#에서 스레드 상태를 조사하려면 ThreadState 속성을 사용합니다. ThreadState는 스레드의 현재 상태를 나타내는 열거형으로, 여러 상태 값을 포함합니다. 이 강좌에서는 ThreadState를 이해하고, 예제 코드를 통해 다양한 상태를 확인해 보겠습니다.스레드 상태의 주요 값ThreadState는 다음과 같은 주요 상태 값을 포함합니다.Unstarted: 스레드가 생성되었지만 아직 시작되지 않은 상태.Running: 스레드가 실행 중인 상태.WaitSleepJoin: 스레드가 Sleep, Join 또는 다른 대기 상태에 있는 경우.Stopped: 스레드가 작업을 완료하고 종료된 상태.Aborted: 스레드가 비정상적으로 종료된 상태(예: Abort 호출로 인해)... 2025. 1. 6.
c# 스레드 기초 C# 스레드 기초 강좌C#에서 스레드는 여러 작업을 동시에 실행할 수 있도록 도와주는 중요한 기능입니다. 이 강좌에서는 스레드의 생성부터 관리, 종료까지 다양한 기초 작업을 배우고, 각각의 주제에 대해 예제 코드를 통해 학습하겠습니다.1. 스레드 생성C#에서 스레드를 생성하려면 System.Threading.Thread 클래스를 사용합니다.using System;using System.Threading;class Program{ static void Main() { Thread thread = new Thread(new ThreadStart(DoWork)); thread.Start(); } static void DoWork() { Conso.. 2025. 1. 6.
C# Struct vs Class: 차이점과 최적 사용 사례 C#에서 struct와 class는 객체를 정의하는 데 사용되지만, 중요한 차이점이 있으며 각각 특정 상황에서 적합합니다. 이를 비교하고 언제 사용하는 것이 유리한지 설명하겠습니다.1. 주요 차이점특성 Struct Class기본 형식값 형식 (Value Type)참조 형식 (Reference Type)메모리 할당스택(Stack)힙(Heap)복사 방식값 복사 (deep copy)참조 복사 (shallow copy)상속상속 불가상속 가능기본 생성자기본 생성자를 정의할 수 없음기본 생성자를 정의할 수 있음Null 가능성기본적으로 Null이 될 수 없음Null 값을 가질 수 있음변경 가능성기본적으로 불변 (Immutable)가변적 (Mutable)2. Struct를 사용하는 경우가벼운 데이터 구조메모리 사용량이.. 2025. 1. 6.
재미로 만드는 로또 번호 생성기 #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.
반응형