자가라 노트

C# 5

[C#] 부동소수점 ( + int의 float 변환)

실수형 변수에는 decimal, float(single), double이 있고 그 안에서 '고정 소수점 방식'과 '부동 소수점 방식'으로 나뉩니다. decimal이 해당하는 방식으로 32bit(4byte) 중 [부호-1bit] [정수부-15bit] [소수부-16bit]로 이루어져 있고 이 방법이 일반적으로 생각하는 정수,소수 직접 다 저장하는 방식입니다. 따라서 표현가능한 범위가 크지 않습니다. float(single), double이 해당하는 방식으로 부동(不動)이 아니라 부동(浮動) : '부유해서 동동 떠다니는 소수점'이란 뜻입니다. 이 안에서 또 분류하면 단정도 float (4byte), 그 2배..

C# 2021.11.24

[C#] GC 가비지 컬렉션

Garbage Collection 통칭 GC는 메모리 관리기법의 하나. CLR에서 GC는 자동메모리 관리자 역할로 어플리케이션의 메모리 할당 및 해제를 관리합니다. CLR : MS .NET의 가상머신 구성요소로 IL 실행을 담당합니다. 1) 현재 수행중인 스레드를 모두 중단하고 GC스레드를 활성화합니다. 2) 사용중인 객체 참조그래프 : 루트를 생성합니다. 루트 참조 각 스레드가 수행중인 메서드 로컬변수 CPU 레지스터 변수가 가지고있는 참조 사용중인 각 타입(클래스)의 정적필드 전역변수 3) 힙 메모리의 모든데이터는 처음에 쓰레기로 간주합니다. 4) GC는 루트를 참조하여 관계있는 데이터를 쓰레기에서 제외합니다. 5) 쓰레기 데이터를 삭제하고 현재 사용중인 객체의 위치를 재조정(메모리 컴팩션)합니다. ..

C# 2021.10.17

[C#][자료구조] Tuple 튜플

MS Docs - https://docs.microsoft.com/ko-kr/dotnet/api/system.tuple?view=net-5.0 Tuple : (1개 이상의 구성요소를 가질 수 있는 자료구조) Tuple ~ Tuple 까지 7개의 오버로드와 Tuple의 8번째 오버로드로 구성되어 있습니다. using System을 사용합니다. 8번째 오버로드 : Tuple ▶ T1 ~ T7까지는 일반적인 사용법과 같고 8번째 요소에는 반드시 Tuple이 들어가야 합니다. 이를 이용해 Tuple을 재귀적으로 물릴 수 있습니다. ▶ Tuple 이런식으로 늘립니다. ▶ 생성자에는 매개변수가 필수입니다. Tuple t2 = new Tuple(8, 9); // 매개변수를 넣어서 생성해줘야 한다. Tuple t8 =..

C#/자료구조 2021.09.16

[C#][Unity] is as 캐스팅 연산자

is, as는 C#의 캐스팅 연산자로 객체를 캐스팅 할때 사용. 기본적으로 상속관계의 클래스간 하향캐스팅을 할 때 사용된다. 하향캐스팅은 명시적으로 이루어져야 하는데 실행시점에 실패 할 가능성이 있다. is, as 연산자를 사용하면 런타임을 거치지않고도 성공유무를 확인 할 수있다. 캐스팅후 캐스팅 결과에 따라 bool값을 리턴한다. (캐스팅이 가능하다면 true / 캐스팅이 불가능하면 false를 반환한다.) 값타입, 참조타입 모두 사용가능 class child{ ... } void Test() { int i = 0; if (i is child) { } } 캐스팅이 가능하다면 캐스팅 결과를 반환하고 / 캐스팅이 불가능하면 null을 반환한다. 참조 타입끼리만 사용 가능하다. public class par..

C# 2021.08.12

[C#][Unity] Extention (확장 메서드)

(확장 메서드) 확장 메서드를 사용하면 기존 형식에 메서드를 "추가"할 수 있다. 주로 readonly나 상속 불가능한 클래스에 필요한 기능을 추가할 때 사용한다. 확장 메서드와 일반 메서드를 호출하는 데는 명백한 차이가 없다고 한다. 확장 메서드는 정적 메서드이지만 확장 형식의 인스턴스 메서드인 것처럼 호출된다. 놀랍게도 가장 일반적인 확장 메서드는 (쿼리 기능을 기존 System.Collections.IEnumerable 및 System.Collections.Generic.IEnumerable 형식에 추가하는) LINQ 표준 쿼리 연산자라고 한다! 참고 : MSDC - 확장명 메서드 static 클래스를 만든 후 확장메서드로 사용할 static 메서드를 만든다. 확장하려는 클래스를 매개변수의 첫번째로..

C# 2021.08.01