본문 바로가기
반응형

프로그래밍/C#117

C# 문자열 정렬하기 문자열 정렬하기 알고리즘을 풀 거나한 몇몇 상황에서 문자열 정렬이 필요한데, 알아두면 유용하게 사용이 가능하다. 최근 알고리즘 문제에서 문자열 정렬만 하면 되는데 갑자기 버블 정렬을 하고 있는 나를 발견할 수 있었다. 우선 문자열을 정렬하기 위해서는 각각의 문자로 분리하여야 한다. char의 배열로 변환한 후에 정렬해준다. public static class StringExtensions { public static string Sort(this String input) { char[] chars = input.ToCharArray(); Array.Sort(chars); return new string(chars); } public static string SortDesc(this String input.. 2024. 1. 15.
C# Call by value와 Call by reference에 대해서 먼저 읽고 오면 좋은 글 C# Value Type vs Reference Type 값 타입(Value Type) 스택 메모리에 저장 데이터를 직접 가지고 있음 기본 타입들 대부분이 값 타입 (Booleans, Characters, DateTime, TimeSpan, 구조체) 값 타입 변수를 복사하면 완전히 새로운 변수가 생기고 jettstream.tistory.com Call by value 우리는 함수를 호출할 때 함수에 인자로 넣어서 함수를 실행시킨다. 이때, 인자로 넘겨지는 객체는 그 자체가 전달되는 것이 아니라 복사되어서 넘어간다. public void main() { int x = 3; Foo(x); Console.WriteLine(x); // 3 } public void Foo(int y) {.. 2024. 1. 12.
C# String은 참조 타입(Reference type)이면서 불변(Immutable)하다. string vs StringBuilder 예를 들어, int의 경우를 살펴보자. int는 값 타입(value type)이면서 가변(mutable)이다. 값 타입은 데이터 변경 시에 새로운 메모리 할당이 일어나지 않는다. 이미 생성된 메모리의 데이터가 변경된다. static void Main(string[] args) { int a = 100; int b = a; a = 300; Console.WriteLine($"a : {a}"); // 300 Console.WriteLine($"b : {b}"); // 100 } string의 경우를 살펴보자. string은 참조 타입(reference type)이면서 불변(immutable)이다. static void Main(string[] args) { stri.. 2024. 1. 10.
BitConverter.ToInt16 메서드에 대해서 ToInt16 메서드 public static short ToInt16 (byte[] value, int startIndex); byte[] 배열에 시작 index를 지정하면 16bit, 2byte, Int16의 크기만큼 데이터를 short 형식으로 변환한다. (two byte array elements to a short) 예제 코드 // Example of the BitConverter.ToInt16 method. using System; class BytesToInt16Demo { const string formatter = "{0,5}{1,17}{2,10}"; // Convert two byte array elements to a short and display it. public static v.. 2024. 1. 8.
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.