본문 바로가기
반응형

c#126

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 = Enumerable.Ra.. 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.
Effective C# Item 17 : 표준 Dispose 패턴을 구현하라 표준 Dispose 패턴을 구현하라 비관리 리소스(Unmanaged Resource)를 포함하는 타입을 작성할 때 리소스 관리를 어떻게 해야 할지를 살펴보자. .NET Framework 내부에서는 비관리 리소스를 정의하는 표준화된 패턴을 사용하고 있으므로 새로운 타입을 만들 때도 동일한 패턴을 이용하는 것이 좋다. 바로 Dispose 패턴을 사용하면 된다. 이 패턴을 이용하면 개발자들에게 IDisposable 인터페이스를 통해서 리소스를 삭제할 수 있는 기능을 안정적으로 제공할 수 있다. 게다가 비관리 리소스를 명시적으로 정리해야 한다는 사실을 잊어버리거나 인지하지 못한 경우에도 finalizer를 통해 올바르게 리소스가 정리될 수 있도록 해준다. 표준 Dispose 패턴은 가비지 수집기와 연계되어 동작.. 2023. 11. 3.
Effective C# Item 13 : 정적 클래스 멤버를 올바르게 초기화하라 정적 클래스 멤버를 올바르게 초기화하라. 정적 멤버 변수를 포함하는 타입이 있다면 인스턴스를 생성하기 전에 반드시 정적 멤버 변수를 초기화해야 한다. 이를 위해 C#에서는 정적 멤버 초기화 구문(static member initializer) 정적 생성자(static constructors) 라는 두 가지 기능을 제공한다. 정적 생성자는 타입 내에 정의된 모든 메서드, 변수, 속성에 최초로 접근하기 전에 자동으로 호출되는 특이한 메서드다. 이 메서드를 활용하면 정적 변수를 초기화하거나, 싱글톤 패턴을 적용하거나, 혹은 여타의 작업을 효과적으로 수행할 수 있다. 정적 변수를 초기화하기 위해서 인스턴스 생성자나 전용의 private:메서드 혹은 다른 관용구를 사용해서는 안된다. 정적 필드를 초기화하는 과정이.. 2023. 10. 27.