Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#

  1. C#에서 재귀(Recursion)로 피보나치 수열의 n번째 값 구하는 방법

    C# 재귀를 활용한 피보나치 수열 구현 개요피보나치 수열은 각 항이 바로 앞의 두 항의 합으로 정의되는 수열입니다(0, 1, 1, 2, 3, 5, 8, 13...). 이러한 자기 참조적 특성 덕분에 재귀(recursion), 즉 메서드가 자기 자신을 다시 호출하는 방식으로 매우 자연스럽게 구현할 수 있습니다.먼저 n번째 피보나치 값을 반환할 메서드를 하나 정의합니다.public int displayFibonacci(int n)그다음 이 메서드를 아래와 같이 호출하면, 내부에서 스스로를 반복적으로 호출하며 n번째 값을 계산합니다.di

  2. C#에서 스레드의 현재 컨텍스트 ID를 확인하는 방법

    C#에서 새로운 스레드를 생성하는 방법은 매우 간단합니다. Thread.CurrentThread 속성을 사용해 현재 실행 중인 스레드에 접근한 뒤, 원하는 이름을 지정할 수 있습니다.새 스레드 생성하기Thread thread = Thread.CurrentThread; thread.Name = My new Thread;스레드의 이름이 설정되었다면, 이제 현재 스레드가 실행 중인 컨텍스트의 ID를 확인할 차례입니다. 이때 사용하는 것이 바로 ContextID 속성입니다.현재 컨텍스트 ID 가져오기Thread.CurrentContext.

  3. C#에서 재귀(Recursion)를 활용해 숫자의 거듭제곱 구하는 방법

    C#에서 재귀를 사용하여 숫자의 거듭제곱 구하기프로그래밍에서 재귀(recursion)는 함수가 자기 자신을 반복적으로 호출하며 문제를 해결하는 기법입니다. 이 글에서는 C#에서 재귀 함수를 활용해 숫자의 거듭제곱을 계산하는 방법을 단계별로 살펴보겠습니다.1. 숫자와 지수 설정거듭제곱을 계산하려면 먼저 밑(base)과 지수(exponent)를 변수로 선언합니다.int n = 15; int p = 2;2. 재귀 메서드 작성다음으로 위 두 값을 매개변수로 받아 처리하는 재귀 메서드를 작성합니다.static long power(int n,

  4. C#에서 메서드 실행 시간 측정하기 – Stopwatch 클래스 완벽 가이드

    .NET 환경에서 특정 메서드의 실행 시간을 정확하게 측정하고 싶다면 Stopwatch 클래스를 사용하는 것이 가장 간편하고 신뢰할 수 있는 방법입니다. Stopwatch는 System.Diagnostics 네임스페이스에 포함되어 있으며, 고해상도 타이머를 기반으로 밀리초(ms) 단위의 정밀한 시간 측정을 지원합니다.1. Stopwatch 시작하기아래와 같이 StartNew() 메서드를 호출하면 Stopwatch 인스턴스가 생성되는 동시에 시간 측정이 바로 시작됩니다.Stopwatch s = Stopwatch.StartNew();2

  5. C#으로 디스크 여유 공간 확인하는 방법

    C#에서는 DriveInfo 클래스를 활용하면 특정 드라이브의 여유 공간과 전체 용량을 손쉽게 조회할 수 있습니다. 이 클래스는 System.IO 네임스페이스에 포함되어 있어, 별도의 외부 라이브러리 설치 없이 바로 사용할 수 있습니다.1. DriveInfo 인스턴스 생성먼저 확인하고자 하는 드라이브 문자를 지정하여 DriveInfo 객체를 생성합니다. 아래 예제는 E 드라이브의 정보를 가져오는 코드입니다.DriveInfo dInfo = new DriveInfo(E);2. 여유 공간 표시하기AvailableFreeSpace 속성을

  6. C#에서 문자열이 유효한 키워드인지 확인하는 방법

    C#에서 문자열이 유효한 키워드인지 확인하는 방법문자열이 C#에서 유효한 키워드인지 확인하려면 IsValidIdentifier 메서드를 사용하면 됩니다.IsValidIdentifier 메서드는 입력된 값이 식별자(identifier)인지 여부를 검사합니다. 만약 해당 값이 식별자가 아니라면, 그 값은 C#의 예약어(키워드)라는 의미입니다.예제에서는 CodeDomProvider를 생성한 뒤 IsValidIdentifier 메서드와 함께 사용합니다.CodeDomProvider provider = CodeDomProvider.Create

  7. C# 배열에서 K번째로 작은 요소를 찾는 방법

    C# 배열에서 K번째로 작은 요소 찾기 C# 프로그래밍에서 배열 안에서 K번째로 작은 요소를 찾아야 하는 경우가 종종 있습니다. 이 글에서는 Array.Sort() 메서드를 활용해 이 문제를 간단하고 효율적으로 해결하는 방법을 단계별로 살펴보겠습니다. 1단계: 배열 선언하기 먼저 정수형 1차원 배열을 선언합니다. int[] a = new int[] { 65, 45, 32, 97, 23, 75, 59 }; 2단계: 배열 정렬하기 K번째로 작은 값을 구하려면 먼저 배열을 오름차순으로 정

  8. C#에서 실수(float)를 이진수로 변환하는 방법

    C#에서 실수(float) 값을 이진수(binary) 형태로 변환해야 하는 경우가 종종 있습니다. 이 글에서는 반복문과 나머지 연산을 활용해 float 값을 이진수 문자열로 변환하는 기본적인 방법을 단계별로 살펴보겠습니다. 변환 원리 먼저 다음과 같이 변환할 float 변수를 선언합니다. float n = 50.5f; 그다음 이진수 결과를 담을 빈 문자열을 준비하고, 변수의 값이 1 미만이 될 때까지 반복하면서 값을 2로 나눈 나머지를 문자열 앞쪽에 계속 추가하는 방식으로 이진수를 구성합니다. string a = ; while

  9. C#에서 배열에 중복 숫자가 있는지 확인하는 방법

    C# 프로그래밍에서 배열 안에 같은 숫자가 두 번 이상 등장하는지, 즉 중복 값이 존재하는지 확인해야 하는 경우가 자주 있습니다. 가장 대표적인 방법은 Dictionary(딕셔너리)를 사용해 각 요소의 등장 횟수를 세는 것입니다.1단계: 배열 선언하기먼저 검사할 정수형 배열을 준비합니다.int[] arr = { 87, 55, 23, 87, 45, 23, 98 };2단계: 딕셔너리로 등장 횟수 세기딕셔너리를 하나 선언한 뒤, foreach 루프로 배열을 순회하면서 각 숫자가 몇 번 나왔는지 기록합

  10. C# 싱글톤(Singleton) 클래스 완벽 가이드: 개념부터 구현까지

    싱글톤(Singleton) 클래스는 데이터의 단일 할당과 하나뿐인 인스턴스 생성만 허용하는 디자인 패턴입니다. 일반적인 메서드를 포함할 수 있으며, 인스턴스를 통해 해당 메서드들을 호출할 수 있습니다.클래스의 여러 인스턴스가 생성되는 것을 방지하려면 private 생성자를 사용해야 합니다. 외부에서 new 키워드로 객체를 생성하지 못하도록 차단함으로써, 프로그램 전체에서 단 하나의 인스턴스만 존재하도록 보장할 수 있습니다.싱글톤 클래스의 기본 구조public class Singleton {    

  11. C#으로 연결 리스트(LinkedList) 선언부터 순회까지 한 번에 배우기

    C#에서는 LinkedList 컬렉션을 사용하여 연결 리스트를 간단하게 선언할 수 있습니다. 다음과 같이 문자열 타입의 연결 리스트를 생성해 보겠습니다. var a = new LinkedList<string>(); 연결 리스트가 준비되었다면, AddLast 메서드를 사용해 요소를 추가할 수 있습니다. 이 메서드는 항상 리스트의 마지막(끝)에 새 노드를 삽입합니다. a.AddLast(Tim); a.AddLast(Tom); 그렇다면 이렇게 구성된 연결 리스트를 어떻게 순회(traversal)할 수 있을까요? C#에서는 fo

  12. C# 소켓 프로그래밍 완벽 가이드: System.Net.Sockets 활용법

    C#에서 네트워크 통신을 구현하려면 System.Net.Sockets 네임스페이스를 사용합니다. 이 네임스페이스는 Windows Sockets 인터페이스(윈속, Winsock)의 관리형(managed) 구현체를 제공하여, 개발자가 복잡한 저수준 API를 직접 다루지 않고도 안정적인 네트워크 애플리케이션을 작성할 수 있게 해줍니다.동기식과 비동기식 소켓C# 소켓 프로그래밍에는 두 가지 기본 동작 모드가 있습니다.동기식(Synchronous): 작업이 완료될 때까지 현재 스레드가 차단(blocking)됩니다. 코드 작성이 간단하지만,

  13. C# 스레드 동기화 완벽 정리: lock과 Mutex 활용법

    멀티스레드 애플리케이션에서는 여러 스레드가 동시에 같은 자원에 접근할 수 있기 때문에 동기화(Synchronization) 처리가 필수적입니다. 이 글에서는 C#에서 제공하는 lock 문과 Mutex 클래스를 활용해 공유 자원에 대한 접근을 안전하게 제어하는 방법을 살펴봅니다.스레드 동기화를 위한 MutexMutex(뮤텍스)는 프로세스 간에도 스레드를 동기화할 수 있는 강력한 도구입니다. 특정 코드 블록을 한 번에 하나의 스레드만 실행하도록 제어해야 할 때 유용하게 사용됩니다.C#에서는 lock 문을 사용하여 다른 스레드의 방해 없

  14. C# 스레드 기반 병렬 처리: Thread, ThreadPool, Task 완벽 정리

    C#에서 태스크 병렬 처리(Task Parallelism)는 하나의 작업을 여러 개로 나눈 뒤, 각 작업을 별도의 스레드에 할당해 동시에 처리하는 프로그래밍 기법입니다. 이를 통해 CPU 자원을 효율적으로 활용하고 애플리케이션의 성능을 크게 향상시킬 수 있습니다..NET의 병렬 실행 메커니즘.NET에서는 코드를 병렬로 실행하기 위한 세 가지 주요 메커니즘을 제공합니다.Thread: 가장 저수준(low-level)의 스레드 제어 방식ThreadPool: 재사용 가능한 스레드 풀을 통해 스레드 생성 비용 절감Task: 비동기 및 병렬

  15. C# 스레드 안전(Thread-Safe) 컬렉션 완벽 정리

    C# 스레드 안전 컬렉션이란?.NET Framework 4부터 System.Collections.Concurrent 네임스페이스가 새롭게 도입되었습니다. 이 네임스페이스에는 다양한 컬렉션 클래스가 포함되어 있으며, 이 클래스들은 스레드로부터 안전(Thread-Safe)하고 뛰어난 확장성(Scalability)을 갖추고 있습니다.일반적인 컬렉션(List, Dictionary 등)은 여러 스레드가 동시에 접근하면 데이터 손상이나 예외가 발생할 수 있지만, 동시성 컬렉션은 여러 스레드가 안전하게 항목을 추가하거나 제거할 수 있도록 설계되

  16. C# 단위 테스트 완벽 가이드: Visual Studio에서 MS Unit Test 시작하기

    단위 테스트(Unit Testing)는 C# 개발에서 필수적인 요소입니다. 개발 과정 전반에 걸쳐 코드를 체계적으로 유지·관리할 수 있도록 도와주며, 문제가 발생했을 때 개발 초기 단계에서 빠르게 발견하고 수정할 수 있게 해줍니다.단위 테스트를 활용하면 코드의 신뢰성과 재사용성을 크게 높일 수 있습니다.TDD(테스트 주도 개발) 접근 방식단위 테스트를 도입할 때의 기본 원칙은 TDD(Test Driven Development), 즉 테스트 주도 개발 방식을 따르는 것입니다. TDD에서는 먼저 테스트 케이스를 작성한 후, 해당 테스트

  17. C# ReaderWriterLock 사용법 완벽 정리

    C# ReaderWriterLock이란?ReaderWriterLock은 여러 스레드가 하나의 공유 리소스에 접근할 때 이를 동기화하기 위해 사용되는 클래스입니다.일반적인 Monitor는 한 번에 하나의 스레드만 잠금을 획득할 수 있는 반면, ReaderWriterLock은 읽기 작업과 쓰기 작업을 구분하여 처리함으로써 더 높은 처리량(throughput)을 제공합니다. 따라서 리소스가 자주 변경되지 않고 읽기 요청이 많은 환경에서 특히 효과적입니다.ReaderWriterLock 선언 방법C#에서 ReaderWriterLock을 선언

  18. C#에서 배열을 내림차순으로 정렬하는 방법

    C#에서 배열을 내림차순으로 정렬하는 것은 Array.Sort() 메서드와 Comparison<T> 델리게이트를 함께 활용하면 간단하게 구현할 수 있습니다. 기본적으로 Sort()는 오름차순으로 정렬되기 때문에, 비교 로직을 직접 지정해 주어야 내림차순 정렬이 가능합니다.1. 배열 선언 및 초기화먼저 정수형 배열을 선언하고 값을 초기화합니다.int[] arr = new int[] { 87, 23, 65, 29, 67 };2. 내림차순 정렬 구현정렬을 수행하려면 Sort() 메서드를 사용

  19. C#에서 LINQ를 활용해 단어를 사전순으로 정렬하는 방법

    C#에서 문자열 배열을 사전순(lexicographical order)으로 정렬하는 것은 LINQ의 orderby 절을 사용하면 매우 간단합니다. 이 글에서는 기본 예제부터 전체 코드와 실행 결과까지 단계별로 살펴보겠습니다.1. 문자열 배열 선언하기먼저 정렬할 단어들이 담긴 문자열 배열을 선언합니다.string[] arr = new string[] { Indian, Moroccon, American, };2. LINQ로 사전순 정렬하기LINQ 쿼리 구문에서 orderby 절을 사용하면 요소들을 오름차순, 즉 사

  20. C#의 SortedList, Java SortedMap 인터페이스와 비교하기

    Java에는 정렬된 키-값 쌍을 다루는 SortedMap 인터페이스가 존재합니다. C#에서는 이와 동일한 역할을 하는 컬렉션으로 SortedList를 제공합니다.SortedList란 무엇인가?C#의 SortedList 컬렉션은 키(Key)와 인덱스(Index) 두 가지 방식으로 목록 내 항목에 접근할 수 있다는 점이 특징입니다.SortedList는 본질적으로 배열(Array)과 해시 테이블(Hashtable)의 결합 형태라고 볼 수 있습니다. 즉, 하나의 항목 목록을 키 또는 인덱스 어느 쪽으로든 접근할 수 있도록 지원합니다.인덱스

Total 2668 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:39/134  20-컴퓨터/Page Goto:1 33 34 35 36 37 38 39 40 41 42 43 44 45