.NET/C#
![[C# 11 과 .NET 7] 3. 흐름제어, Type 변환, 예외 처리](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmiOUf%2FbtscfzYV0Jh%2FsbhRIRTEa5LieqU0Q4CdBK%2Fimg.png)
[C# 11 과 .NET 7] 3. 흐름제어, Type 변환, 예외 처리
이번에는 변수를 사용한 간단한 동작과 분기, pattern matching 수행, 구문 혹은 block의 반복과 여러 값을 저장하기 위한 array, 특정 type에서 다른 type으로의 변수나 표현식에 대한 변환, 예외 처리 그리고 숫자형 변수에 대한 overflow를 확인하기 위한 방법 등에 관해서 알아볼 것입니다. 1. 변수 연산 연산자는 변수나 literal값과 같은 피연산자에서 덧셈이나 곱셈과 같은 계산을 수행하는 것을 말합니다. 보통은 연산결과에 대한 새로운 값을 반환하며 이를 다른 변수에 할당하는 과정이 있을 수 있습니다. 대부분의 연산자는 2진연산자로서 아래 예제와 같이 2개의 피연산자를 필요로 합니다. var result = firstOperand operator secondOperand..
![[C# 11 과 .NET 7] 2. C#](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTK05E%2Fbtr9kkb0Gj2%2FVo3IQZ8abq2IIwPAcugly1%2Fimg.png)
[C# 11 과 .NET 7] 2. C#
이번 글에서는 C# programming 언어에 대한 기본적인 사항을 살펴볼 것입니다. 전반적으로 알아야 할 용어와 C#에 대한 기본적인 문법에 대한 것들입니다. 1. C# 언어 C#을 통해 application에 대한 source code를 작성하려면 그에 필요한 문법과 용어를 알고 있어야 할 것입니다. 다행스럽게도 programming 언어자체는 사람이 사용하는 언어(대게는 영어)와 비슷한 면을 가지고 있습니다. 다만 programming에서는 자신만의 단어를 만들어낸다는 차이만 있을 뿐입니다. (1) 언어 version과 기능 ● C# 1 2002년 02월에 발표되었으며 객체지향언어에 대한 모든 중요한 요소를 포함하였습니다. ● C# 1.2 foreach 구문의 끝에서 자동적인 disposal과 같..
[C#] 명명규칙
1. 로컬변수(Local Variables / 지역변수) (1) Camel Case 사용 (2) bool형식의 경우 is, has, can등의 접두어를 사용 (3) 명사 사용 (4) 열거형의 경우 복수형 사용 2. 멤버변수(Member Variables / 전역변수) (1) Camel Case 사용 (2) _접두어 사용 (3) bool형식의 경우 is, has, can등의 접두어를 사용 (4) 명사 사용 (5) 열거형의 경우 복수형 사용 3. 매개변수 (1) Camel Case 사용 (2) 명사 사용 4. 상수 (1) 대문자_대문자... 형식 사용 (2) 명사 사용 5. 속성 (1) Pascal Case 사용 (2) 명사 사용 6. 메서드 (1) Pascal Case 사용 (2) 동사 사용 7. 클래스 ..
![[C#] 멀티태스킹(Multitasking) - 4. async와 await](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPLIUR%2FbtrHicKWWdT%2F86Qah0FOqFgWey2kqohGS0%2Fimg.png)
[C#] 멀티태스킹(Multitasking) - 4. async와 await
5. async와 await C# 5에서는 Task Type을 위한 2개의 키워드가 추가되었는데 이 키워드는 특히 아래의 상황에서 유용하게 사용될 수 있습니다. GUI 환경에서의 멀티 태스킹 구현 Web Service의 확장성 향상 (1) Console Application에서의 비동기 구현 await 키워드는 단지 async가 구현된 메서드에서만 사용될 수 있고 C# 7과 그 이전 버전에서 Main() 메서드는 async가 구현되는 걸 허용하지 않았습니다. 이것이 Console Application에서 가질 수 있는 한계점 중 하나였는데 C# 7.1에 들어와서는 main() 메서드에도 async가 적용되는 걸 지원하지 시작했습니다. 새로운 Console Application프로젝트를 생성하고 아래와 같..
![[C#] 멀티태스킹(Multitasking) - 3. 공유 자원 접근](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeVvadq%2FbtrHd1KQDKE%2FfuHRmiBNPHLtD14fhTOKW1%2Fimg.png)
[C#] 멀티태스킹(Multitasking) - 3. 공유 자원 접근
4. 공유 자원 접근 같은 시간에 여러 스레드를 실행시키는 경우 2개나 혹은 그 이상의 스레드가 같은 변수나 기타 다른 리소스에 접근을 시도하는 경우가 생길 수 있습니다. 이는 Application의 안정성에 문제를 일으킬 수 있으므로 스레드 안전한(thread-safe) 코드를 만들도록 해야 합니다. 우선 공유된 자원에 대한 접근을 동기화하는 데 사용될 수 있는 아래 2가지 타입을 알아볼 필요가 있습니다. Monitor : 여러 스레드가 같은 프로세스 안에서 공유된 자원에 접근할 수 있는지를 확인하는 데 사용되는 개체입니다. Interlocked : CPU 수준에서 단순한 수치를 조작하기 위한 개체입니다. (1) 다중 스레드로부터의 자원 접근 해당 사례를 구현하기 위해 우선 아래와 같이 공유할 변수를 ..
![[C#] 멀티태스킹(Multitasking) - 2. 비동기(Asynchronously)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeGc0jz%2FbtrHfQ9qieP%2FxKOplZdVfIkhUYENc92cxk%2Fimg.png)
[C#] 멀티태스킹(Multitasking) - 2. 비동기(Asynchronously)
3. 비동기(Asynchronously) 실행 우선 어떻게 같은 시간에 동시적으로 여러 작업이 실행될 수 있는지를 알아보기 테스트 가능한 아래 3개의 메서드를 생성합니다. static void ThreadInfo() { Thread t = Thread.CurrentThread; Console.WriteLine($"스레드 Id: {t.ManagedThreadId}, 우선순위: {t.Priority}, 백그라운드: {t.IsBackground}, 태스크명: {t.Name ?? string.Empty}"); } static void MethodA() { Console.WriteLine("A실행시작"); OutputThreadInfo(); Thread.Sleep(5000); Console.WriteLine("A..
![[C#] 멀티태스킹(Multitasking) - 1. 프로세스(process), 스레드(thread), 태스트(task) 그리고 성능모니터링](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRnpzo%2FbtrG8HToxb6%2Fknc899MlXFEUTmxDZPcMqk%2Fimg.png)
[C#] 멀티태스킹(Multitasking) - 1. 프로세스(process), 스레드(thread), 태스트(task) 그리고 성능모니터링
멀티태스킹은 같은 시간에 더 많은 성능 향상과 확장성 그리고 Application을 통한 사용자 생산성을 향상할 수 있는 방안을 제공해 줄 수 있습니다. 1. 프로세스(process), 스레드(thread) 그리고 태스트(task) 프로세스는 하나의 프로그램이 될 수 있습니다. 반드시 하나의 프로그램이 하나의 프로세스가 된다는 것은 아니지만(필요하다면 하나의 프로그램에서 여러 프로세스를 생성할 수 있으므로) 통상 OS 단에서는 메모리에 할당되어 현재 실행 중인 프로그램을 하나의 프로세스로 관리하고 있습니다. 스레드는 프로그램 안에서 코드를 실행하는 주체를 의미합니다. 기본적으로 하나의 프로세스는 하나의 스레드를 가지는데 이 말은 한 번에 하나씩의 코드만 실행할 수 있다는 얘기가 되므로 같은 시간에 여러 ..
![[C#] LINQ(Language INtegrated Query) - 3. comprehension syntax과 thread를 통한 응답성 향상, XML 다루기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbieE0M%2FbtrGuqw9HT0%2FLgE1KCOO3Lapk9EfxuRK00%2Fimg.png)
[C#] LINQ(Language INtegrated Query) - 3. comprehension syntax과 thread를 통한 응답성 향상, XML 다루기
3. LINQ query comprehension syntax C# 3.0 때 마이크로소프트는 SQL과 같은 쿼리 구문을 LINQ 쿼리문으로 작성하는 방법을 토대로 개발자들이 더 익숙하게 LINQ구문을 작성하도록 하는 몇 가지 키워드를 소개했습니다. 예를 들어 다음과 같이 특정 Item을 필터링하는 메서드를 사용한 경우 using (Northwind db = new()) { var result = db.Products.Where(x => x.ProductId == 3).SingleOrDefault(); Console.WriteLine(result.ProductName); } query comprehension 구문을 통해 위와 같은 동작을 수행할 수 있습니다. using (Northwind db = ne..