본문 바로가기

프로그래밍/C#101

C# List Sort()를 사용해서 정렬하기 C# List Sort()로 정렬해 보자 Comparison 객체로 정렬 무명 메서드로 정렬 람다로 정렬 번외 - OrderBy(), OrderByDescending() 함수로 정렬 Comparison 객체를 이용하여 정렬하기 구글에서 가볍게 검색했을 때 나왔던 방식은 Comparison을 사용하는 방법이다. 하지만 뭔가 가독성이 떨어지는 느낌이다. public class Program { static void Main(string[] args) { int start = 10; int end = 3; List list = new List(); for (int i = end; i x); (newList로 반환받아서 사용해야 함.) public class Program { static void Main(st.. 2023. 11. 23.
C# 8 : using 선언 using 선언 using 선언은 using 키워드 뒤에 오는 변수 선언으로서, using 뒤에 있는 변수가 using을 둘러싼 범위를 벗어날 경우 Dispose 하도록 컴파일러에게 지시하게 된다. 기존의 using문을 사용할 경우 괄호 {...} 를 표시해야 했는데, using 블럭 전체를 들여쓰기 해야하는 불편함이 있었다. using 선언은 (별도의 괄호를 메서드 내부에 사용하지 않는 한) 통상 메서드가 끝날 때 Dispose()를 자동 호출하게 해 준다. 물론 경우에 따라 긴 메서드 안에 특정 부분에서만 using을 사용하고 빨리 Dispose() 해 주어야 한다면, 기존의 using문을 사용할 수 있따. 아래 예제에서 GetDataCS8() 메서드는 C# 8.0의 using 선언을 예시한 것으로 .. 2023. 11. 10.
Json 작성 시 JavaScriptEncoder.UnsafeRelaxedJsonEscaping 옵션에 대해서 JavaScriptEncoder.UnsafeRelaxedJsonEscaping 속성은? 기본 인코더와 달리 해당 속성을 적용하면 ,&와 같은 HTML 구분 문자를 이스케이프 하지 않는다. 예를 들어 출력 데이터가 UTF-8로 설정된 Content-type의 응답 내에는 사용할 수 있다. 기본 인코딩과 달리 따옴표는 \u0022가 아닌 \" 로 인코딩 된다. 설정하지 않으면 json 파일로 출력시에 내용이 >> 설정 전 #Desc": "\uD558\uD2B8 \uC120\uAE00\uB77C\uC2A41", 와 같은 식으로 출력되어서 읽을 수가 없다. 설정 코드 using var stream = new FileStream(outputPath, FileMode.Create); using var writer .. 2023. 11. 9.
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.