728x90

언어 105

MethodImpl

MethodImplMethodlmpl 특성(attribute)은 .NET에서 메서드의 구현 방식이나 특정 기능을 지정하는 데 사용된다. 이 특성은 주로 성능 최적화, 동기화, 인라인(inline) 규칙 등을 제어하기 위해 사용된다.MethodImplAttribute는 System.Runtime.CompilerServices 네임스페이스에 정의되어 있으며, 메서드, 생성자 또는 속성 접근자에 적용할 수 있다.주요 MethodImplOptions 값NoInlining메서드가 JIT(Just-In-Time) 컴파일러에 의해 인라인되지 않도록 한다. 인라인은 메서드 호출을 메서드 본문으로 대체하는 최적화 기술이다.AggressiveInliningJIT 컴파일러가 가능하면 메서드를 인라인하려고 시도하도록 한다. ..

언어/C# 2024.08.06

Static extern

Static extern외부에서 구현된 정적 메서드를 선언하는 데 사용된다. 이 키워드 조합은 주로 플랫폼 호출을 통해 네이티브 코드(예: C/C++ 라이브러리의 함수)를 호출할 때 사용된다.extern 키워드는 메서드의 구현이 외부에 있다는 것을 나타내며, static 키워드는 해당 메서드가 클래스의 인스턴스와 독립적임을 의미한다.보통 DLL(동적 링크 라이브러리)에 있는 함수를 호출하기 위해 사용된다. DllImport 속성을 사용하여 해당 함수가 포함된 DLL을 지정해야 한다.중요 사항플랫폼 호출(P/Invoke)extern 키워드는 메서드의 구현이 관리되지 않는 코드(네이티브 코드) 에서 제공됨을 의미한다.P/Invoke는 C# 코드에서 네이티브 DLL의 함수를 호출할 때 사용된다.메서드의 반환값..

언어/C# 2024.08.06

Environment.ProcessorCount

Environment.ProcessorCountC#에서 현재 시스템의 논리 프로세서(코어) 수를 반환하는 속성이다.이 속성은 .NET의 System 네임스페이스에 포함되어 있으며, 멀티 스레딩 또는 병렬 작업을 최적화할 때 유용하게 사용할 수 있다.논리 프로세서와 물리 프로세서논리 프로세서하이퍼스레딩 기술과 같은 기술을 통해 운영 체제가 인식하는 프로세서의 수를 나타낸다.물리 프로세서실제로 존재하는 코어의 수를 나타낸다.활용스레드 풀 크기 결정시스템의 논리 프로세서 수를 기반으로 스레드 풀의 크기를 동적으로 결정할 수 있다.병렬 작업 최적화데이터 병렬 처리를 최적화할 때 사용할 스레드의 수를 조정할 수 있다.시스템 정보 제공애플리케이션에서 시스템의 프로세서 개수를 사용자에게 표시하거나 로그에 기록할 수 ..

언어/C# 2024.08.06

HashSet<T>

HashSet고유한 요소의 집합을 저장하는 컬렉션이다.중복을 허용하지 않으며, 각 요소는 고유해야 한다. 내부적으로 해시 테이블을 사용하여 요소를 저장하므로, 요소의 추가, 삭제, 검색 등이 평균적으로 매우 빠르게 수행된다.특징고유성동일한 요소가 여러 번 추가될 수 없으며, 요소의 고유성을 유지한다.빠른 검색해시 테이블을 사용하므로 평균적으로 O(1)의 시간 복잡도로 요소를 찾을 수 있다.정렬되지 않음HashSet의 요소는 특정 순서로 정렬되지 않는다.집합 연산HashSet은 집합 연산을 효율적으로 수행할 수 있는 다양한 메서드를 제공한다.교집합, 합집합, 차집합 등의 연산을 할 수 있다.

언어/C# 2024.08.05

SequenceEqual<TSource>(IEnumerable<TSource>, IEnumerable<TSource>)

SequenceEqual(IEnumerable, IEnumerable)해당 형식에 대한 기본 같음 비교자를 통해 요소를 비교하여 두 시퀀스가 서로 같은지 확인한다.형식 매개변수TSource입력 시퀀스 요소의 형식이다.매개변수First IEnumerable: second와 비교할 IEnumerable 이다.Second IEnumerable : first와 비교할 IEnumerable 이다.반환Boolean두 소스 시퀀스의 길이가 같고 해당 형식의 기본 같음 비교자에 따라 상응하는 요소가 서로 같으면 true, 그렇지 않으면 false 이다.매개변수가 하나만 들어가는 경우두 시퀀스를 비교할 때 현재 컬렉션과 매개변수로 전달된 컬렉션을 비교하는 것이다.특징기본적으로 요소의 타입에 정의된 equality c..

언어/C# 2024.08.05

TryGetValue 메서드에서 Dictionary와 Tuple 함께 사용

TryGetValue 메서드에서 Dictionary와 Tuple 함께 사용TryGetValue 메서드Dictionary 클래스의 메서드로, 키를 사용해 값을 안전하게 가져오려 할 때 사용한다.형식 : dictionary.TryGetValue(key, out value)((a,b) out c) 매개변수(a, b): 키(key)로 사용되는 튜플이다.out c: 찾은 값을 저장할 변수이다.장점복합 키를 사용할 수 있어 다차원 데이터를 효율적으로 표현할 수 있다.튜플을 사용함으로써 코드가 더 명확해질 수 있다.주의사항튜플을 키로 사용할 때는 모든 요소가 정확히 일치해야 한다.성능을 고려해야 할 경우, 복잡한 튜플 키의 사용은 주의가 필요할 수 있다.

언어/C# 2024.08.05

추상 클래스(abstract class)

추상 클래스(abstract class)다른 클래스들이 상속 받을 수 있는 클래스이다. 추상 클래스 자체는 인스턴스화할 수 없으며 주로 공통된 기능이나 인터페이스를 정의하는 데 사용한다.추상 메서드(abstract method)추상 클래스 내에서 선언되며, 메서드 본체를 가지지 않는다.파생 클래스에서 반드시 해당 메서드를 구현해야 한다.주의사항추상 클래스는 인스턴스화할 수 없다추상 클래스는 추상 메서드를 가질 수 있지만, 추상 메서드가 없어도 추상 클래스로 선언할 수 있다.추상 메서드는 오직 추상 클래스 내에서만 선언될 수 있다.추상 클래스는 일반 메서드와 속성도 가질 수 있다.추상 메서드는 파생 클래스에서 반드시 구현해야 한다.

언어/C# 2024.08.01

Task.FromResult

Task.FromResultC#에서 비동기 프로그래밍을 할 때 사용되는 유용한 메서드이다.이미 알고 있는 결과 값으로 완료된 TASK를 생성한다.동기 작업을 비동기 메서드의 결과로 반환해야 할 때 유용하다.특징이미 완료된 상태의 Task를 반환한다.CPU 작업이나 I/O 작업을 기다리지 않는다.스레드 풀을 사용하지 않는다.사용 예캐시된 결과를 반환할 때단위 테스트에서 모의 객체(mock)를 만들 때비동기 인터페이스를 구현하지만 실제로는 동기 작업을 수행할 때성능새로운 Task 객체를 생성하는 것보다 효율적이다.이미 알고 있는 값으로 Task를 생성할 때 최적화된 방법이다.

언어/C# 2024.08.01

GUID(Globally Unique Identifier)

GUID(Globally Unique Identifier)전 세계적으로 유일한 값을 생성하기 위한 표준으로, 주로 소프트웨어에서 고유한 식별자를 생성하는 데 사용된다.Microsoft에서 처음 도입됐으며, 다른 시스템에서는 UUID(Universally Unique Identifier)로도 알려져 있다.128비트의 숫자이며, 일반적으로 32자리 16진수로 표현된다.형식32자리 16진수로 표현되며, 하이픈(’-’)으로 구분된 5개의 그룹으로 나뉜다.ex)123e4567-e89b-12d3-a456-426614174000이 형식은 다음과 같이 구분된다.첫 번째 그룹 : 8자리두 번째 그룹 : 4자리세 번째 그룹 : 4자리네 번째 그룹 : 4자리다섯 번째 그룹 : 12자리사용 예데이터베이스의 기본 키, 소프트웨..

언어/C# 2024.08.01
728x90