C#에서 배열 동기화 여부 확인하기C#에서 배열이 동기화(synchronized)되어 있는지 확인하려면 IsSynchronized 속성을 사용하면 됩니다. 이 속성은 해당 배열에 대한 접근이 스레드로부터 안전(thread-safe)한지 여부를 불리언(Boolean) 값으로 반환합니다.new 키워드로 생성한 일반 배열은 기본적으로 동기화되어 있지 않으므로, IsSynchronized 속성은 항상 False를 반환합니다. 멀티스레드 환경에서 배열을 안전하게 공유해야 한다면 Array.Synchronized() 메서드로 감싼 동기화된 래
현재 실행 중인 스레드가 관리형(managed) 스레드 풀에 속해 있는지 확인하려면 Thread.CurrentThread.IsThreadPoolThread 속성을 사용하면 됩니다. 이 속성은 해당 스레드가 .NET 런타임에서 제공하는 스레드 풀에서 파생된 것인지 여부를 나타내며, 개발자가 직접 생성한 스레드라면 False, 스레드 풀에서 실행 중인 작업이라면 True를 반환합니다.예제 1: 직접 생성한 스레드의 경우먼저 new Thread를 통해 직접 생성한 스레드에서 이 속성 값을 확인해 보겠습니다.using System; usi
Windows 파일 시간은 1601년 1월 1일 자정(UTC)을 기준으로 경과한 100나노초 간격의 수를 나타내는 값입니다. C#에서는 DateTimeOffset.FromFileTime() 메서드를 사용하여 이 값을 해당하는 현지 시간으로 손쉽게 변환할 수 있습니다.기본 사용 예제다음 예제에서는 파일 시간 값 0을 현지 시간으로 변환합니다. 파일 시간의 기준점이 1601년이므로 결과도 해당 날짜로 표시됩니다.using System; public class Demo { public static void Main() {
C#에서 현재 열거형(enumeration) 타입에 정의된 멤버들의 이름을 확인하고 싶다면, Type 클래스의 GetEnumNames() 메서드를 활용하면 됩니다. 이 메서드는 열거형에 포함된 상수 이름들을 문자열 배열(string[]) 형태로 반환해 주며, 대상 타입이 열거형이 아닐 경우 ArgumentException 예외가 발생한다는 점에 유의해야 합니다.GetEnumNames() 메서드란?GetEnumNames()는 System 네임스페이스의 Type 클래스에 정의된 메서드로, 호출된 Type 객체가 나타내는 열거형의 모든
C#에서 GetEnumUnderlyingType() 메서드를 사용하면 현재 열거형(enum)이 내부적으로 사용하는 기본 형식(underlying type)을 확인할 수 있습니다. 별도로 지정하지 않으면 모든 열거형은 기본적으로 int(System.Int32)를 기본 형식으로 가집니다.예제 1 – 열거형의 기본 형식 조회다음은 Vehicle이라는 열거형의 상수 이름과 기본 형식을 함께 출력하는 예제입니다.using System; public class Demo { enum Vehicle {
OrderedDictionary는 요소가 삽입된 순서를 유지하는 특수한 컬렉션입니다. 이 컬렉션에 저장된 모든 키를 가져오려면 Keys 속성을 사용하면 되며, 이 속성은 키들을 담고 있는 ICollection 객체를 반환합니다.반환된 ICollection은 CopyTo 메서드를 통해 배열로 복사할 수 있어, 반복문으로 각 키를 손쉽게 출력할 수 있습니다.예제 1: 숫자 문자열 키 사용하기다음 예제에서는 OrderedDictionary를 생성하고 여러 개의 키-값 쌍을 추가한 뒤, Keys 속성으로 키 컬렉션을 가져와 배열에 복사하여
C#에서 HashSet과 지정된 컬렉션이 서로 같은 요소들을 포함하고 있는지 확인하려면 SetEquals() 메서드를 사용하면 됩니다. 이 메서드는 두 집합이 동일한 요소를 가지고 있으면 True를, 그렇지 않으면 False를 반환합니다.예제 1: 다른 요소를 가진 경우아래 예제에서는 두 개의 문자열 HashSet을 생성합니다. set1에는 일곱 개의 요소가, set2에는 네 개의 요소가 들어 있으므로 두 집합은 같지 않습니다.using System; using System.Collections.Generic; public cla
C#에서 두 개의 HashSet의 합집합(Union)을 구하려면 UnionWith() 메서드를 사용하면 됩니다. 이 메서드는 현재 HashSet에 다른 컬렉션의 모든 요소를 병합하며, 중복된 요소는 자동으로 제거되므로 집합 연산을 매우 간편하게 수행할 수 있습니다.예제 1: 동일한 요소를 가진 두 HashSet의 합집합아래 예제에서는 두 개의 HashSet을 생성하고 UnionWith() 메서드로 합집합을 구하는 과정을 보여줍니다.using System; using System.Collections.Generic; public c
BitArray 클래스는 비트(bit) 값들을 불리언(Boolean) 형태로 저장하는 압축된 배열을 관리하는 컬렉션 클래스입니다. 이때 true는 해당 비트가 켜져 있음(1)을 의미하고, false는 비트가 꺼져 있음(0)을 의미합니다.BitArray는 메모리를 효율적으로 사용해야 하는 플래그(flag) 관리나 비트 단위 연산이 필요한 상황에서 특히 유용하게 활용됩니다.BitArray 클래스의 주요 메서드다음 표는 BitArray 클래스에서 자주 사용되는 메서드들을 정리한 것입니다.번호메서드 및 설명1public BitArray A
C#에서 List<T>의 용량(Capacity)은 리스트가 재할당 없이 저장할 수 있는 요소의 총 개수를 의미합니다. 리스트에 실제로 담긴 요소 수(Count)와는 다른 개념이며, 내부 배열의 크기를 나타냅니다.리스트의 용량을 확인하려면 Capacity 속성을 사용하면 됩니다. 아래 예제를 통해 살펴보겠습니다.예제 1: 두 리스트의 용량 확인using System; using System.Collections.Generic; public class Demo { public static void Main(String[
C#에서 현재 DateTime 객체의 값을 UTC(Coordinated Universal Time, 협정 세계시)로 변환하려면 ToUniversalTime() 메서드를 사용하면 됩니다. 이 메서드는 현재 객체의 시간 값을 UTC 기준으로 변환한 새로운 DateTime 객체를 반환합니다.예제 1다음은 DateTime 객체를 생성한 후 ToUniversalTime() 메서드를 호출하여 UTC로 변환하는 기본적인 예제입니다.using System; public class Demo { public static void Main() {
C# 프로그래밍에서는 논리 값을 나타내는 문자열을 실제 부울(Boolean) 값으로 변환해야 하는 경우가 자주 발생합니다. 이럴 때 Boolean.TryParse 메서드를 사용하면 안전하고 효율적으로 변환 작업을 수행할 수 있습니다.TryParse 메서드는 지정된 문자열이 유효한 논리 값(예: true 또는 false)인지 검사한 후, 변환에 성공하면 true를 반환하고 out 매개변수를 통해 변환된 값을 전달합니다. 반대로 유효하지 않은 문자열이라면 false를 반환합니다.예제 1: 유효한 문자열 변환하기다음은 문자열 true를
C#에서 현재 Decimal 인스턴스의 해시 코드를 가져오려면 GetHashCode() 메서드를 사용하면 됩니다. 이 메서드는 해당 값에 대한 해시 코드를 나타내는 32비트 정수를 반환하며, 해시 테이블(Hashtable)이나 딕셔너리(Dictionary)와 같은 해시 기반 컬렉션에서 빠른 검색 성능을 제공하기 위해 주로 활용됩니다.예제 1: 기본 Decimal 값의 해시 코드 구하기다음은 특정 Decimal 값의 해시 코드를 구하는 예제입니다.using System; public class Demo { public stat
C#에서 Decimal 값 형식의 TypeCode를 가져오려면 GetTypeCode() 메서드를 사용하면 됩니다. 이 메서드는 해당 값 형식을 나타내는 TypeCode 열거형 값을 반환합니다.예제 1: Decimal.MaxValue 사용다음은 Decimal 값 형식의 TypeCode를 가져오는 예제입니다.using System; public class Demo { public static void Main(){ Decimal val =
C#에서 지정된 Decimal 값을 해당하는 8비트 부호 없는 정수(byte)로 변환하려면 Decimal.ToByte() 메서드를 사용합니다. 이 메서드는 소수점 이하를 버리고(0 방향으로 반올림) 정수 부분만 byte 값으로 반환합니다. 아래 예제 코드를 통해 살펴보겠습니다.예제 1using System; public class Demo { public static void Main(){ Decimal val1 = 6.59m; Decimal val2 = 30.12m; Decimal val3 =
C#에서 특정 유니코드 문자가 구분 문자(Separator)인지 확인하려면 Char.IsSeparator() 메서드를 사용합니다. 이 메서드는 지정된 문자가 유니코드 구분 범주(Unicode Separator Category)에 해당하는지 여부를 판별하여 true 또는 false를 반환합니다.예제 1 – 쉼표(,) 문자 검사먼저 쉼표 문자가 구분 문자인지 확인해 보겠습니다.using System; public class Demo { public static void Main(){  
C# SortedList의 용량이란?C#에서 SortedList는 키를 기준으로 자동 정렬되는 키-값 쌍 컬렉션입니다. SortedList에 담긴 실제 요소의 개수는 Count 속성으로 확인할 수 있고, 내부적으로 확보된 저장 공간의 크기는 Capacity 속성으로 확인할 수 있습니다.SortedList는 요소가 추가될 때마다 필요에 따라 용량을 자동으로 늘리는데, 기본 생성자로 생성한 경우 초기 용량은 0이며 첫 번째 요소가 추가될 때 16으로 설정됩니다.예제 1: SortedList의 Count와 Capacity 출력하기다음은
C#에서 SortedSet과 특정 컬렉션이 서로 공통된 요소를 가지고 있는지 확인해야 하는 경우가 있습니다. 이럴 때 사용할 수 있는 것이 바로 Overlaps() 메서드입니다.Overlaps() 메서드는 현재 SortedSet과 지정된 컬렉션 사이에 최소 하나 이상의 공통 요소가 존재하는지 판단합니다. 공통 요소가 있으면 true, 없으면 false를 반환합니다.Overlaps() 메서드의 기본 문법public bool Overlaps (System.Collections.Generic.IEnumerable<T> othe
StringCollection은 문자열 컬렉션을 다루는 클래스로, System.Collections.Specialized 네임스페이스에 포함되어 있습니다. 이 컬렉션에서는 인덱서(indexer)를 사용하여 지정된 인덱스 위치의 요소를 자유롭게 가져오거나 새로운 값으로 설정할 수 있습니다.예제 1 – 인덱스로 요소 가져오기다음은 StringCollection에서 지정된 인덱스의 요소를 가져오는 코드입니다.using System; using System.Collections.Specialized; public class Demo {
C#의 Collection<T> 클래스(System.Collections.ObjectModel 네임스페이스)는 인덱서를 제공하기 때문에 지정된 인덱스 위치의 요소를 간단하게 읽거나 수정할 수 있습니다. 아래 예제를 통해 그 사용법을 살펴보겠습니다.예제 1: 특정 인덱스의 요소 가져오기다음 코드는 컬렉션을 생성하고 요소를 추가한 뒤, 인덱서를 사용해 원하는 위치의 요소를 조회하는 방법을 보여줍니다.using System; using System.Collections.ObjectModel; public class Demo {