반응형 프로그래밍/C#116 상황별로 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# 꼬리 재귀(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. C# for 반복문 작성 시 후위 증가 연산자를 쓰는 이유 평상시 쓰던 for 반복문 지금까지 너무나도 당연하게 작성하고 있는 for 반복문 하지만 갑자기 의문이 들었다. 왜 for 반복문에서 증감연산자는 후위 증가연산자를 사용하는가? using System; public partial class Program { static void Main(string[] args) { int[] ints = { 8, 10, 24, -1, 98, 47, -101, 39 }; for (int i = 0; i < ints.Length; i++) { Console.WriteLine(ints[i]); } } } for 반복문의 경우 (초기화 ; 조건 검사 ; 증감 연산)과 같이 각각이 별도의 연산으로 증감 연산에서 전위 후위에 관계없이 동일한 결과를 도출한다. i++, ++i 어느.. 2024. 3. 29. 이전 1 2 3 4 5 6 7 8 ··· 20 다음