본문 바로가기

c#109

상황별로 appsettings.json 선택적으로 읽기 ASP .NET 코어 앱에서 appsettings.json 읽기 Configuration 클래스는 ASP .NET 코어 앱에서 빌드되고 실행될 때, 앱에 관한 설정값을 제공하는 서비스 역할을 한다. 이 서비스 자체는 프레임워크 서비스이기 때문에 별도로 서비스 컨테이너에 등록하는 과정 없이 바로 의존성 주입(dependancy injection)을 이용해서 사용이 가능하다. Startup.cs에서 사용하기 위해서 의존성 주입한 예제이다. .NET 설정 파일 우선순위 우선순위에 맞춰서 덮어쓰기를 진행한다. 순위가 높은 항목의 내용으로 덮어쓰기 된다. Command-line arguments Non-prefixed environment variables User secrets appsettings.{envir.. 2024. 4. 8.
C# 메모화(Memoization) 메모화란 무엇인가? 코드 최적화를 위해 메모화(memoization) 기법을 적용할 수 있다. 메모화는 특정 입력 값에 대한 함수의 처리 결과를 기억하는 과정이라고 할 수 있다. 즉, 특정 함수에 입력 값을 전달할 때마다 프로그래밍이 결과를 기억해 두고 이후 입력 값이 같다면 함수를 다시 실행하지 않고 저장된 곳에서 결과를 얻는다. 기존 GetFactorial() using System; public partial class Program { static void Main(string[] args) { Console.WriteLine(GetFactorial(5)); } static int GetFactorial(int n) { if (n == 0) { return 1; } return n * GetFac.. 2024. 4. 5.
C# 지연 초기화(lazy initialization) C# 지연 초기화 지연 초기화(lazy initializtion)는 사용 시점까지 개체 생성을 연기하는 최적화 기법이다. 즉, 멤버에 대한 액세스가 이뤄지기 전에는 초기화되지 않는 개체를 정의하는 셈이다. 이를 위해 C#에서는 C# 4.0에 이르러 Lazy 클래스를 도입했다. 다음 코드는 지연 초기화를 알아보기 위한 예제이다. using System; public partial class Program { static void Main(string[] args) { LazyInitName("Matthew Maxwell"); } private static void LazyInitName(string NameOfPerson) { Lazy pn = new Lazy(() => new PersonName(Name.. 2024. 4. 4.
C# 피보나치 수열 IEnumerable, IEnumerator 상속받아서 구현하기 C# 피보나치 수열 그동안 재귀로 피보나치 수열은 여러번 구현해봤다. 이번에는 IEnumerable, IEnumerator를 상속받아서 피보나치 수열을 구현해보자. using System; using System.Collections; using System.Collections.Generic; using System.Linq; public partial class Program { static void Main(string[] args) { Console.WriteLine("Enumerable Fibo"); GetFibonacciNumbers(10); } public static void GetFibonacciNumbers(int totalCount) { var fb = new FibonacciEnum.. 2024. 4. 4.
C# [백준 BAEKJOON] 6588번 골드바흐의 추측 문제 1742년, 독일의 아마추어 수학가 크리스티안 골드바흐는 레온하르트 오일러에게 다음과 같은 추측을 제안하는 편지를 보냈다. 4보다 큰 모든 짝수는 두 홀수 소수의 합으로 나타낼 수 있다. 예를 들어 8은 3 + 5로 나타낼 수 있고, 3과 5는 모두 홀수인 소수이다. 또, 20 = 3 + 17 = 7 + 13, 42 = 5 + 37 = 11 + 31 = 13 + 29 = 19 + 23이다. 이 추측은 아직도 해결되지 않은 문제이다. 백만 이하의 모든 짝수에 대해서, 이 추측을 검증하는 프로그램을 작성하시오. 입력 입력은 하나 또는 그 이상의 테스트 케이스로 이루어져 있다. 테스트 케이스의 개수는 100,000개를 넘지 않는다. 각 테스트 케이스는 짝수 정수 n 하나로 이루어져 있다. (6 ≤ n ≤.. 2024. 4. 1.
C# 꼬리 재귀(tail recursion) 꼬리 재귀(tail recursion)란 무엇인가? 지금까지 재귀에 대해서 설명하면 GetFactorial() 메서드를 사용해서 계승을 계산하는 전통적인 재귀 형태를 사용했다. 이 방식은 재귀 호출을 먼저 수행하고 값을 반환하며, 이후에 결과를 계산한다. 이 재귀 모델을 이용하는 경우, 재귀 호출이 끝날 때까지 결과를 얻을 수 없다. 이 같은 전통적인 재귀 모델과 더불어 꼬리 재귀(tail recursion)라는 또 다른 형태가 있다. 꼬리 재귀에서는 꼬리 즉, 마지막 재귀 호출이 함수가 수행하는 마지막 작업이다. using System; public partial class Program { static void Main(string[] args) { TailCall(5); } public static.. 2024. 4. 1.