본문 바로가기

프로그래밍/C#101

C# 컬렉션 - System.Collections.ArrayList ArrayList에 대해서 ArrayList는 object 타입 및 그와 형변환할 수 있는 모든 타입을 인자로 받아 컬렉션에 추가/삭제/변경/조회할 수 있는 기능을 구현한 타입이다. 간단하게 생각해서 크기가 자유롭게 변할 수 있는 배열이라고 보면 된다. ArrayList는 object를 인자로 갖기 때문에 닷넷의 모든 타입을 담을 수 있다는 장점이 있지만 반대로 이로 인해 박싱이 발생한다는 단점이 있다. 따라서 System.ValueType을 상속받는 값 형식을 위한 컬렉션으로는 적당하지 않다. 이를 해결하기 위해서는 닷넷 2.0부터 지원되는 제네릭(Generic)이 적용된 List 타입을 사용하는 것이 권장된다. (ArrayList는 deprecated되었다. 특수한 경우가 아니라면 List를 사용하도.. 2023. 5. 22.
P/Invoke란 무엇인가? P/Invoke란? C# / ,NET에서 Native DLL (Unmanaged DLL)에 있는 함수를 호출하는 것을 Plaform Invoke 혹은 줄여서 P/Invoke라고 부른다. 예를 들어, C#에서 윈도우즈 운영체제의 Win32 API를 호출한다던가, C/C++로 작성된 Native DLL의 함수를 호출할 필요가 있을때, P/Invoke 방식을 사용한다. P/Invoke를 사용하기 위해서는 System.Runtime.InteropServices 네임스페이스에 있는 DllImport를 사용하여 어떤 DLL에서 함수를 가져올지를 지정한다. 해당 함수의 원형을 C# 메서드 원형으로 정의해 준다. 이때 C# 메서드는 static extern으로 지정한다. 예제 코드 using System; using .. 2023. 5. 19.
C# 단정밀도(Single Precision), 배정밀도(Double Precision)에 대해서 부동소수점(Floating point) 부동소수점의 표현 방법에 대해서는 IEEE754에서 32bit single-precision과 64bit double-precision 표준을 정하고 있는데 이것이 바로 float와 double의 규격이다. 기본적인 구조는 최상위 비트는 부호를 표시하는데 사용하고 지수부(Exponent)와 가수부(Fraction/Mantissa)로 구성되어 있다. 부호비트는 0일 경우 양수, 1일 경우 음수를 의미한다. 단정밀도(Single Precision) 단정밀도는 부동소수점을 표현하기 위해서 32bit(4바이트)를 사용합니다. 8비트의 지수부(Exponent) 23비트의 가수부(Mantissa) 배정밀도보다 빠르고 더 적은 리소스를 사용 C# float는 단정밀도로 표현된다.. 2023. 5. 11.
C# ProtectedSessionStorage 클래스 브라우저의 SessionStorage 컬렉션에 데이터를 저장하고 검색하는 기능을 제공한다. SessionStorage는 LocalSotrage와 비슷하지만 LocalStorage의 데이터는 만료되지 않고 SessionStorage의 데이터는 페이지 세션이 끝날 때 함께 제거되는 차이가 있다. 페이지 세션은 브라우저가 열려있는 한 새로고침과 페이지 복구를 거쳐도 남아있다. 페이지를 새로운 탭이나 창에서 열면, 세션 쿠키의 동작과는 다르게 최상위 브라우징 맥락의 값을 가진 새로운 세션을 생성한다. 같은 URL을 다수의 탭/창에서 열면 각각의 탭/창에 대해 새로운 SessionStorage를 생성한다. 탭/창을 닫으면 세션이 끝나고 SessionStorage 안의 객체를 초기화한다. 주요 함수 public V.. 2023. 5. 10.
C# 히트맵(HeatMap) 그리기 Heatmap style gradients in .NET I am trying to create a heat map with gradients that look similar to this: This image shows three points and the gradients blend nicely together. Here is what I am currently doing in my drawing stackoverflow.com 라이브러리를 사용하지 않고 C#을 통해서 히트맵을 그려봤습니다. 해당 내용은 스택오버플로우에 질문과 답변을 참고하여 작성하였습니다. 원하는 목표 히트맵(Heatmap)을 만들기 위해서 원을 그린다. 원은 중첩 가능하며 중첩된 부분은 진한 색으로 표현되어야 한다. 빨강에서 시작.. 2023. 5. 8.
C# 날짜 서식 지정자(Datetime Format Specifier)에 대해서 날짜를 표시하는 서식이 여러 가지 있어서 아주 헷갈린다. 하나씩 정리해 보자. 서식에는 d, D, t, T, g, G, f, F, s, o, u 등등의 매우 다양한 지시어가 있다. 간단한 날짜("d") 서식 지정자 DateTime date1 = new DateTime(2008,4, 10); Console.WriteLine(date1.ToString("d", DateTimeFormatInfo.InvariantInfo)); // Displays 04/10/2008 Console.WriteLine(date1.ToString("d", CultureInfo.CreateSpecificCulture("en-US"))); // Displays 4/10/2008 Console.WriteLine(date1.ToString.. 2023. 5. 4.