반응형 프로그래밍/C#116 C# IDisposable에 대해서 IDisposable이란? Dispose의 단어의 뜻은 제거하다, 처분하다는 뜻의 사전적 의미를 가진다. 여기에 가능하다라는 의미의 able이 붙었으니 제거 가능한, 사용 후 버리게 되어있는, 일회용이라는 뜻이 된다. C#에서 무엇을 사용하고 제거하려고 할까? 바로 메모리다. 메모리를 사용하고 다 썼으면 할당된 메모리를 해제해야 한다. C#은 Garbage Collector(가비지 콜렉터)를 통해서 힙 메모리 영역에서 더 이상 사용하지 않는 객체들을 제거하는 역할을 한다. 자동으로 제거하기 때문에 개발자는 메모리 해제에 대해서 신경 쓰지 않아도 된다. 그러면 Dispose는 왜 필요할까? GC는 관리되지 않는 리소스들을 인식하지 못한다. GC는 개발자가 동작을 지시하는 것이 아니기 때문에 어느 시점에 메.. 2023. 11. 3. C# Convert 메서드 Convert.ToString(Int32, Int32) 정의 네임스페이스: System 어셈블리: System.Runtime.dll 32비트 부호 있는 정수 값을 지정된 기수에 해당하는 문자열 표현으로 변환합니다. value를 특정 진수로 변환한다. public static string ToString(int value, int toBase); 매개변수 value Int32 변환할 32비트 부호 있는 정수 toBase Int32 반환 값의 기수로서 2,8,10 또는 16 반환 String value 기수를 사용한 toBase의 문자열 표현 예외 ArgumentException toBase가 2, 8, 10 또는 16이 아님 Convert.ToInt32(String, Int32) 정의 네임스페이스: Sys.. 2023. 10. 12. 리터럴(Literal)과 상수(Constant)에 대해서 리터럴(Literal) 리터럴(Literal)이란 소스 코드의 고정된 데이터를 의미한다. "리터럴이란 소스코드의 고정된 값을 대표하는 용어"라고 한다. "고정된 값 == 변하지 않는" 값을 말하며, 좀 더 쉽게 말하자면 "리터럴이란 소스코드에 하드코딩된 값"들을 말한다. bool b = true; //불리언 int num1 = 100; //10진수 int num2 = 0x11; //16진수 int num3 = null; //null float num4 = 1.2f //실수 double num5 = 0.11111; //실수 char chr = 'c'; //문자 string str = "BlockDMask"; //문자열 위의 코드를 보면 = 의 오른쪽처럼 프로그래머가 직접 입력할 수 있는 값들이 존재한다. .. 2023. 10. 6. C# IEnumerable, IEnumerator에 대해서 IEnumerator 열거자를 구현하는데 필요한 인터페이스, 클래스 내부의 컬렉션에 대해 반복할 수 있도록 도와준다. public interface IEnumerator { object Current { get; } bool MoveNext(); void Reset(); } IEnumerator는 반복자 구현에 필요한 함수 3가지를 구현하게 강제하는 인터페이스이다. 반복자를 구현하기 위해서는 최소 위의 3개의 함수를 알아서 구현하면 된다라고 틀을 잡아준다. Current 읽기 전용 프로퍼티로 현재 위치의 데이터를 object 타입으로 리턴한다. MoveNext() 다음 위치로 이동하는데 다음 위치에 데이터가 있으면 true 없으면 false 그래서 보통 컬렉션 인덱스를 1씩 증가시켜 컬렉션의 끝에 도달했.. 2023. 10. 5. C# 정수 숫자 형식 2진수, 10진수, 16진수 2진수(Binary Number) 0과 1의 2가지 조합으로 표현된다. 10진수와 구분하기 위해 앞에 0b를 붙인다. 0b00, 0b01, 0b10, ob11 컴퓨터에게 자연스러운 수 10진수(Decimal Number) 0 1 2 3 4 5 6 7 8 9의 10가지 조합으로 표현된다. 사람에게 자연스러운 수 16진수(Hexadecimal) 0 1 2 3 4 5 6 7 8 9 A B C D E F의 16가지 조합으로 표현된다. 10진수와 구분하기 위해서 0x를 붙인다. 0x00 0x01 .... 0xFF 4자리의 2진수를 1자리의 16진수로 줄여 쓸 수 있다는 장점이 있다. 정수 형식의 특성 정수 숫자 형식은 정수(Integer)를 표현한다. 모든 정수 숫자 형식은 값 형식이.. 2023. 9. 26. 사용자 정의 명시적, 암시적 변환 연산자(explicit, implicit) 사용자 정의 명시적, 암시적 변환 연산자 명시적 변환 연산자 : explicit operator 암시적 변환 연산자 : implicit operator public static implicit operator byte(Digit d) => d.digit; public static explicit operator Digit(byte b) => new Digit(b); (C++에는 explicit 키워드가 있는데 해당 키워드를 생성자에 추가하면 암시적인 형변환을 제한한다. 오직 명시적 형변환 만을 허용) 예제 코드 using System; public readonly struct Digit { private readonly byte digit; public Digit(byte digit) { if (digi.. 2023. 9. 25. 이전 1 ··· 7 8 9 10 11 12 13 ··· 20 다음