본문 바로가기

c#109

C# 변수 캡처(Capture)에 대해서 람다 변수 캡처(Capture) 람다를 다루다 보면 변수를 캡처하는 상황을 맞이하게 될 것이다. using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List actions = new List(); for (int i = 0; i Console.WriteLine(i)); } foreach (var a in actions) { a.Invoke(); } // 기대하던 출력: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 // 실제 출력: 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 } } 위의 코드를 작.. 2024. 1. 23.
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# Linq - Enumerable.Range() Enumerable.Range(Int32, Int32) 메서드 public static System.Collections.Generic.IEnumerable Range (int start, int count); 매개변수 start int32 시퀀스의 첫번째 정수값 (시작값) count int32 생성할 순차적 정수의 개수 특정 시작값에서부터 순차적으로 정수를 생성하고 싶을때 사용한다. 정리하자면 Enumerable.Range(0, 5); 라고 한다면 0, 1, 2, 3, 4 로 정수의 나열이 생성된다. 예제 코드 // Generate a sequence of integers from 1 to 10 // and then select their squares. IEnumerable squares = Enum.. 2023. 12. 18.
[프로그래머스 Programmers] 비밀지도 문제 설명 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. "지도 1"과 "지도 2"는 각각 정수 배열로 암호화되어 있다. 암호화된 배열은 지도의 각 가.. 2023. 11. 27.
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.