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

C#

  1. C#에서 DateTime.TryParseExact로 날짜 형식 유효성 검사하는 방법

    C#에서 날짜 형식의 유효성을 검사할 때는 DateTime.TryParseExact 메서드를 사용하는 것이 가장 간편하고 안정적인 방법입니다. 정규식(Regex)으로 패턴을 일일이 작성하는 대신, 이 메서드 하나만으로 날짜 형식이 올바른지 손쉽게 확인할 수 있습니다.DateTime.TryParseExact는 지정된 날짜 및 시간 문자열을 미리 정의한 형식과 비교하여 그에 해당하는 DateTime 값으로 변환해 줍니다. 변환에 성공하면 true를 반환하고, 입력된 날짜 형식이 올바르지 않으면 false를 반환하므로 형식 검증에 매우

  2. C#에서 두 리스트의 차이 구하는 방법 – Except() 메서드 활용법

    C#에서 두 리스트(List)의 차이, 즉 한쪽에는 있지만 다른 쪽에는 없는 요소들을 구하려면 먼저 비교 대상이 되는 두 개의 리스트를 준비해야 합니다.1. 두 리스트 준비하기먼저 문자열을 담는 두 개의 리스트를 만들고 요소를 추가합니다.// 첫 번째 리스트 List<string> list1 = new List<string>(); list1.Add(A); list1.Add(B); list1.Add(C); list1.Add(D); // 두 번째 리스트 List<string> list2 = new Li

  3. C#으로 두 개의 정렬된 배열을 하나로 병합하는 방법

    C#에서 두 개의 정렬된 배열을 하나의 배열로 합치는 작업은 배열을 다룰 때 자주 사용되는 기본 기법입니다. 이 글에서는 두 개의 정렬된 배열을 선언하고, 이를 하나의 새로운 배열에 순서대로 병합하는 방법을 단계별로 살펴보겠습니다.1단계: 병합할 두 개의 배열 선언먼저 병합하고자 하는 두 개의 정수형 배열을 선언합니다. 각 배열은 5개의 요소를 가지며, 오름차순으로 정렬되어 있습니다.int[] arr1 = new int[5] { 5, 15, 25, 30, 47 }; int[] arr2 = new int[5] { 55, 60, 76,

  4. C# 재기드(Jagged) 배열의 요소 형식은 무엇일까?

    C# 재기드(Jagged) 배열의 요소 형식 재기드 배열(가변 배열)은 말 그대로 배열의 배열 구조를 가집니다. 따라서 재기드 배열의 각 요소는 참조 형식(reference type)이며, 별도로 초기화하지 않으면 null 값으로 설정됩니다. 또한 일반적인 2차원 사각형 배열과 달리 각 행(내부 배열)의 길이가 서로 달라도 되기 때문에, 비정형 데이터를 다룰 때 메모리를 더 유연하고 효율적으로 활용할 수 있습니다. 재기드 배열 선언하기 정수형 배열을 요소로 가지는 재기드 배열은 다음과 같이 선언합니다. int [][] marks;

  5. C# 언박싱(Unboxing)이란? 박싱과의 차이점과 예제로 쉽게 이해하기

    C#에서 언박싱(Unboxing)이란?C#에서 박싱(Boxing)은 암시적으로(자동으로) 수행되는 반면, 언박싱(Unboxing)은 명시적으로 수행해야 합니다.언박싱이란 박싱을 통해 생성된 참조 타입(object) 객체를 다시 원래의 값 타입(value type)으로 되돌리는 명시적 형변환을 의미합니다. 즉, 힙(heap) 영역에 저장된 객체에서 값을 꺼내어 스택(stack)의 값 타입 변수에 할당하는 과정입니다.박싱과 언박싱의 기본 예제다음은 C#에서 int 타입 변수를 object로 박싱한 후, 다시 언박싱하는 기본적인 예제입니

  6. C# 비관리 코드(Unmanaged Code)란? 개념부터 unsafe 키워드 활용까지

    C#에서 비관리 코드(Unmanaged Code)는 공용 언어 런타임(CLR)의 완전한 관리·제어를 받지 않는 코드를 의미합니다. 일반적인 C# 코드가 가비지 컬렉션, 타입 안정성 검사 등 CLR의 다양한 안전장치 속에서 실행되는 반면, 비관리 코드는 이러한 관리 범위를 벗어나 메모리 주소에 직접 접근할 수 있습니다. 비관리 코드의 주요 특징 CLR의 제어를 받지 않는 애플리케이션이 비관리 코드에 해당합니다. 비관리 코드(또는 안전하지 않은 코드, Unsafe Code)는 포인터 변수를 사용하는 코드 블록을 말합니다. unsafe

  7. C# try-catch-finally 흐름 제어 완벽 이해하기

    C#에서 try, catch, finally 블록의 흐름 제어는 예외 처리의 핵심 개념입니다. 각 블록이 언제, 어떤 순서로 실행되는지 정확히 이해하면 더욱 안정적인 프로그램을 작성할 수 있습니다. 다음 예제는 두 수를 나누는 과정을 통해 흐름 제어를 살펴봅니다. 예제 코드 using System; namespace ErrorHandlingApplication { class DivNumbers { int result; DivNumbers() { result = 0;

  8. C#에서 10진수(Decimal)를 2진수(Binary)로 변환하는 방법

    이번 글에서는 숫자 48을 2진수로 변환하는 과정을 예시로 살펴보겠습니다.10진수를 2진수로 변환하는 핵심 원리는 간단합니다. 나누기 연산자(/)와 나머지 연산자(%)를 사용해 값을 2로 계속 나누고, 각 단계의 나머지를 차례로 기록하는 것입니다. 몫이 1보다 작아질 때까지 반복하면 변환이 완료됩니다.decVal = 48; while (decVal >= 1) { val = decVal / 2; a += (decVal % 2).ToString(); decVal = val; }루프가 진행되는 동안 나머지 값

  9. C#으로 문자열이 회문(Palindrome)인지 확인하는 방법

    회문(Palindrome)은 앞에서 읽으나 뒤에서 읽으나 같은 문자열을 의미합니다. 예를 들어 Level, Madam, Racecar 같은 단어가 대표적인 예입니다. 이번 글에서는 C#을 사용하여 특정 문자열이 회문인지 판별하는 방법을 알아보겠습니다.1. 문자열 준비하기먼저 회문 여부를 확인할 문자열을 준비합니다.str = Level;2. 문자열을 문자 배열로 변환각 문자를 개별적으로 다루기 위해 ToCharArray() 메서드를 사용해 문자열을 문자 배열로 변환합니다.char[] ch = str.ToCharArray();3. 배열

  10. C#에서 Hello World 출력하는 방법 완벽 가이드

    C# 프로그래밍을 배우는 첫걸음은 화면에 Hello World를 출력하는 것입니다. C#에서는 Console.WriteLine() 메서드를 사용하면 간단하게 콘솔 창에 텍스트를 출력할 수 있습니다.기본 예제 코드아래는 C#으로 텍스트를 콘솔에 출력하는 가장 기본적인 프로그램입니다.using System; using System.Collections.Generic; using System.Text; namespace Program { class MyApplication { static void Main(stri

  11. C# LinkedList 클래스 완벽 정리: 빠른 삽입과 삭제의 핵심

    C# LinkedList란?C#에서는 System.Collections.Generic 네임스페이스를 통해 LinkedList(연결 리스트)를 제공합니다. LinkedList<T> 클래스는 연결 리스트 자료구조를 기반으로 동작하며, 리스트 안에서 요소를 빠르게 삽입하고 삭제할 수 있다는 점이 가장 큰 장점입니다.배열이나 List와 달리 LinkedList는 노드들이 포인터로 서로 연결된 구조이기 때문에, 중간 위치에 있는 요소를 추가하거나 제거할 때도 데이터를 밀어내거나 당기는 작업 없이 처리할 수 있습니다. 또한 중복된

  12. C#에서 파일과 폴더를 찾는 방법 – Directory.GetDirectories 완벽 가이드

    C#에서 특정 경로 아래에 있는 하위 폴더나 파일을 검색해야 하는 경우가 자주 있습니다. 이럴 때 System.IO 네임스페이스의 Directory.GetDirectories 메서드를 사용하면 손쉽게 원하는 디렉터리 목록을 가져올 수 있습니다.Directory.GetDirectories란?Directory.GetDirectories는 지정한 경로에 존재하는 하위 폴더(디렉터리) 이름들의 배열을 반환하는 메서드입니다. 검색 패턴과 검색 옵션을 함께 지정하면, 원하는 조건에 맞는 폴더만 필터링하거나 모든 하위 폴더까지 재귀적으로 탐색할

  13. C#에서 두 개의 Dictionary(딕셔너리) 병합하기 – HashSet과 UnionWith() 활용법

    C# 프로그래밍을 하다 보면 두 개의 Dictionary를 하나로 합쳐야 하는 상황이 자주 발생합니다. 이번 글에서는 HashSet 클래스와 UnionWith() 메서드를 활용해 두 딕셔너리의 키(Key)를 손쉽게 병합하는 방법을 단계별로 살펴보겠습니다. 두 개의 딕셔너리 선언하기 먼저 병합 대상이 될 두 개의 딕셔너리를 생성합니다. 첫 번째 딕셔너리에는 laptop(노트북)과 desktop(데스크톱), 두 번째 딕셔너리에는 desktop(데스크톱), tablet(태블릿), mobile(모바일) 항목이 담겨 있습니다. 여기서 주목

  14. C#의 교착 상태(Deadlock)와 기아 상태(Starvation) 완벽 이해

    C#의 교착 상태(Deadlock)란?교착 상태(Deadlock)는 한 스레드가 특정 리소스를 잠근(lock) 상태에서, 다른 스레드가 동시에 그 리소스를 요구할 때 발생합니다. 이 문제는 멀티프로세싱 환경에서 매우 빈번하게 나타나며, 두 개 이상의 스레드가 서로가 소유한 리소스를 무한정 기다리면서 프로그램 전체가 멈추는 현상을 의미합니다.다음은 가장 대표적인 교착 상태 발생 예시입니다.스레드 1스레드 2락 P 획득락 Q 획득락 Q 요청락 P 요청위 예제에서 스레드 1은 락 Q를 얻지 못합니다. 락 Q는 이미 스레드 2가 소유하고

  15. C#에서 ArrayList 동기화하는 방법 (Synchronized 메서드 활용)

    멀티스레드 환경에서 ArrayList를 안전하게 사용하려면 동기화 처리가 필수입니다. C#에서는 ArrayList.Synchronized 메서드를 사용하여 간단하게 스레드로부터 안전한(thread-safe) 래퍼(wrapper)를 만들 수 있습니다.SyncRoot 속성으로 컬렉션 잠그기컬렉션을 직접 순회할 때는 SyncRoot 속성을 이용해 잠금(lock)을 걸어야 합니다. 다음은 foreach

  16. C# 세마포어(Semaphore) 완벽 가이드: 스레드 접근 제어 방법

    C#에서 세마포어(Semaphore) 클래스는 임계 영역(Critical Section)에 동시에 접근할 수 있는 스레드의 수를 제한할 수 있도록 해줍니다. 주로 여러 스레드가 공유 자원 풀(Resource Pool)에 접근하는 것을 통제할 때 사용되며, 시스템 안정성과 데이터 무결성을 보장하는 데 중요한 역할을 합니다.세마포어 관련 기능은 System.Threading.Semaphore 네임스페이스에 포함되어 있으며, 이 네임스페이스에는 세마포어 구현에 필요한 모든 메서드와 속성이 정의되어 있습니다.세마포어 사용 방법C#에서 세마

  17. C#에서 제네릭 List(목록)를 복제하는 방법 총정리

    List는 C#에서 동일한 데이터 타입의 요소들을 저장하는 대표적인 제네릭(Generic) 컬렉션입니다. 크기가 자동으로 조절되며, 다양한 메서드를 통해 요소를 추가·삭제·검색할 수 있어 실무에서 가장 많이 사용되는 자료구조 중 하나입니다. CopyTo 메서드로 목록 복제하기 C#에서 목록(List)을 복제하는 가장 기본적인 방법은 CopyTo 메서드를 사용하는 것입니다. 이 메서드는 목록의 모든 요소를 지정된 배열로 복사합니다. 1단계: 목록 선언 및 요소 추가 먼저 문자열 타입의 목록을 선언하고 요소들을 추가합니다. List&l

  18. C#에서 문자 배열(char[])을 문자열로 변환하는 방법 총정리

    C# 프로그래밍에서는 문자 배열(char[])을 하나의 문자열(string)로 합쳐야 하는 경우가 자주 발생합니다. 파일 입출력, 사용자 입력 처리, 알고리즘 문제 풀이 등에서 문자 단위 데이터를 문자열로 변환할 때 유용하게 활용됩니다. 이번 글에서는 가장 대표적인 변환 방법과 함께 몇 가지 대안까지 살펴보겠습니다. 1. new string() 생성자 사용하기 가장 간결하고 널리 쓰이는 방법은 string 클래스의 생성자에 문자 배열을 전달하는 것입니다. 먼저 5개의 문자를 담은 배열을 준비합니다. char[] ch = { T

  19. C# 특성(Attribute) 완벽 가이드: 선언적 태그의 개념부터 커스텀 특성 만들기까지

    C#에서 특성(Attribute)은 프로그램 내의 클래스, 메서드, 구조체, 열거형, 어셈블리 등 다양한 요소의 동작에 관한 정보를 런타임에 전달하기 위해 사용되는 선언적 태그(declarative tag)입니다. 특성을 활용하면 코드 자체를 수정하지 않고도 프로그램에 선언적인 메타데이터를 추가할 수 있습니다.특성이란 무엇인가?특성은 대상 요소 바로 위에 대괄호([ ])로 표시됩니다. 컴파일된 코드에는 이 메타데이터가 함께 저장되며, 리플렉션(Reflection)을 통해 런타임에 조회하거나 활용할 수 있습니다.특성의 기본 문법특성을

  20. C#에서 문자열을 정수(int)로 변환하는 방법

    C#에서 문자열을 정수(int)로 변환하는 방법C# 프로그래밍에서는 사용자 입력이나 파일에서 읽어온 데이터가 문자열(string) 형태인 경우가 많습니다. 이러한 문자열을 산술 연산이나 비교 등에 활용하려면 먼저 정수형으로 변환해야 합니다. 가장 대표적인 방법은 Int32.Parse() 메서드를 사용하는 것입니다.Int32.Parse()를 사용한 기본 변환먼저 변환할 문자열을 준비합니다.string str = 9999;이제 Int32.Parse() 메서드를 사용하여 문자열을 정수로 변환합니다.int n = Int32.Parse(st

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