분류 전체보기 133

5장. 패턴 매칭

[2025-02-23] - 게시글 최초 작성1. 패턴 매칭이란?어떤 식이 특정 패턴과 일치하는지 검사.2. 패턴 매칭2.1 선언 패턴주어진 식이 특정 형식과 일치하는지 평가 1. 식이 주어진 형식과 일치하는지 테스트2. 테스트가 성공하면 식을 주어진 형식으로 변환/* * 1. obj가 int인 경우 * 2. obj가 int형식으로 변환하여 bar에 할당 */if (obj is int bar) { Console.WriteLine(bar);}2.2 형식 패턴선언 패턴과 거의 같은 방식으로 동작, 변수 생성 없이 형식 일치 여부만 테스트object obj = 23;if (obj is int) { Console.WriteLine(obj);}class Preschooler { }class Under..

카테고리 없음 2025.02.23

05장. Switch

[2025-02-23] - 게시글 최초 작성1. Switch 사용시 주의점! 가능한 한 연속적인 정수형 case를 사용하여 점프 테이블 최적화를 유도. 불필요하게 복잡한 조건을 줄이는 것이 중요하다.2. Switch 문2.1 형식 패턴// To Version C# 7.3object obj = 123;switch (obj){ case int: // ... break; case float: // ... break; default: break;} 2.2 케이스 가드 switch 문의 case절의 패턴을 더 구체적으로 만들어주는 추가적인 조건 검사// To Version C# 7.3object obj = 123;switch (obj)..

[ 공 부 ]/[ C# ] 2025.02.23

C# 프로그래밍 간단 정리

[2025-02-19] - 게시글 최초 작성[2025-02-23] - 내용 추가 ( 2-2 ~ 4 )1. C# 프로그래밍C++ 프로그래밍과의 차이점!컴파일 방식C++  1. 소스 코드(.cpp) 작성 2. 컴파일러(g++, MSVC) 가 네이티브 코드로 변환 ( .exe, .out 생성 ) 3. 운영 체제에서 실행C#  1. 소스 코드 (.cs) 작성 2. C# 컴파일러 (csc) 가 IL(Intermediate Lanuage) 코드로 변환 3. .NET 런타임(CLR, Common Language Runtime) 이 JIT(Just-In-Time) 컴파일하여 실행 용어 정리한정자 : 다른 요소들을 꾸며주는 역할을 하는 요소CLR : C#으로 만든 프로그램이 실행되는 환경 ( 자바의 가상 머신과 비슷한 ..

[ 공 부 ]/[ C# ] 2025.02.19

Async / Await

[2025-02-09] - 게시글 최초 작성1. Async / Await 란? 비동기 프로그래밍을 간편하게 만들어주는 문법적 도우미. 컴파일러가 자동으로 생성하는 "상태 기계"에 핵심이 숨어 있다.2. Async / Await2.1 상태 기계메서드의 실행 상태(어느 부분까지 실행되었는지, 지역 변수 값 등) 을 저장하는 객체해당 객체는 일반적으로 힙에 할당되며, 메서드가 중단되었다가 재개될 때 필요한 정보를 가지고 있다. 1. aysnc 메서드가 컴파일될 때, 컴파일러는 해당 메서드를 IAsyncStateMachine 인터페이스 구현 - 이 내부 클래스는 메서드의 지역 변수, 현재 상태, Task의 결과를 전달할 빌더 등을 필드로 갖는다. 2. IAsyncStateMachine 인터페이스는 MoveNex..

[ 공 부 ]/[ C# ] 2025.02.09

22장. 가비지 컬렉션

[2025-01-31] - 게시글 최초 작성1. 가비지 컬렉터란? CLR이 자동 메모리 관리 기능을 제공하고 이 기능의 중심에 가비지 컬렉션이 존재한다. 가비지 컬렉터는 CPU와 메모리 같은 컴퓨팅 자원을 소모.  unsafe 키워드 : 비관리형 코드. ( CLR이 제공하는 서비스를 받을 수 없다 )2. 가비지 컬렉터2.1 CLR이 객체에 메모리를 할당하는 방법할당하는 방법1. C#으로 작성한 소스 코드를 컴파일해서 실행 파일을 만들고,    이 실행 파일을 실행시 CLR은 프로그램을 위한 일정 크기의 메모리를 확보2. 메모리 공간을 통째로 확보해서 하나의 관리되는 힙을 마련3. 확보된 힙 메모리의 첫 번째 주소에 ' 다음 객체를 할당할 메모리의 포인터'를 위치메모리에서 해제되는 방법1. 스택에서 해당 ..

[ 공 부 ]/[ C# ] 2025.01.31

21장. 네트워크 프로그래밍

[2025-01-31] - 게시글 최초 작성1. 네트워크 프로그래밍** TCP/IP 스택[ 1층 ] 링크 계층 ( 물리 계층, 네트워크 접속 계층, 미디어 접근 계층 등으로도 불림 ): 네트워크의 물리적인 구성으로부터 독립적인 프로토콜  ( 컴퓨터가 네트워크에 전화선의 모뎀으로 연결되어 있던, LAN에 이더넷 케이블로 연결되어 있던,    WiFi에 연결되어 있던 간에 신경 쓰지 않음 )[ 2층 ] 인터넷 계층 ( IP : 인터넷 프로토콜 ): 패킷을 수신해야 할 상대의 주소를 저장하고, 나가는 패킷에 대해서는 적절한 크기로 분할하며,  들어오는 패킷에 대해서는 재조립을 수행  ( 내보낸 패킷을 상대방이 잘 수령했는지에 대해서 전혀 보장하지 않는다 )[ 3층 ] 전송 계층 ( TCP / UDP ): 패킷..

[ 공 부 ]/[ C# ] 2025.01.31

20장. WinForm

[2025-01-30] - 게시글 최초 작성1. C#의 WinForm란?폼 디자이너 툴 : 프로그래머가 그림을 그리듯 사용자 인터페이스 생성 가능2. WinForm2.1 WinForm 윈도우 만들기윈도우 OS에서 앱이 윈도우 생성하는 절차1. 윈도우 클래스 ( OOP의 클래스와는 다르다 ) 를 정의2. 정의된 윈도우 클래스를 등록3. 윈도우를 생성4. 윈도우를 사용자에게 보여줌5. 메세지 루프를 돌면서 프로그램을 시작 WinForm 클래스를 이용한 윈도우 생성 절차1. System.Windows.Forms.Form 클래스에서 파생된 윈도우 폼 클래스를 선언2. 1번에서 만든 클래스의 인스턴스를 System.Windows.Forms.Application.Run() 메소드에 인수로 넘겨 호출using Sys..

[ 공 부 ]/[ C# ] 2025.01.30

19장. Task

[2025-01-30] - 게시글 최초 작성1. Task / Task / Parallel 란?병렬 처리 : 하나의 작업을 여러 작업자가 나눠서 수행한 뒤 다시 하나의 결과로 만드는 것비동기 처리 : 작업 A를 시작한 후 A 결과가 나올 때까지 B, C, D ... 를 수행하다가 작업 A가 끝나면 그 결과를 받아냄.  .NET 에서 지원하는 System.Threading.Tasks 네임스페이스의 클래스들, async 한정자와 await 연산자Task 등 클래스들도 내부적으로는 Thread를 이용하여 구현.2. T a s k2.1 System.Threading.Tasks.Task 클래스 동기 코드 : 메소드를 호출한 뒤에 이 메소드의 실행이 완전히 종료되어야만 다음 메소드를 호출 가능 비동기 코드 : 메소드..

[ 공 부 ]/[ C# ] 2025.01.30

19장. 스레드

[2025-01-29] - 게시글 최초 작성1. 스레드란?C#에서 .NET은 스레드를 제어하는 클래스로 System.Threading.Thread를 제공2. 스레드2.1 스레드 시작하기 실제 스레드가 메모리에 적재되는 시점은 .Start() 메소드를 호출 했을 경우. Start() : 메소드를 호출하여 스레드를 시작 Join() : 메소드를 호출하여 스레드가 끝날 때까지 대기using System;using System.Threading;namespace ThisIsCSharp{ class MainApp { static void DoSomething() { for(int i = 0; i 2.2 스레드 임의로 종료하기 Abort 메소드가 호출과..

[ 공 부 ]/[ C# ] 2025.01.29

18장. 파일 다루기

[2025-01-29] - 게시글 최초 작성1. 파일 다루기란?.NET은 파일과 디렉토리 정보를 손쉽게 다룰 수 있도록 System.IO 네임스페이스를 지원2. 파일 다루기2.1 파일 정보와 디렉토리 정보 다루기 File : 파일 생성, 복사, 삭제, 이동, 조회를 처리하는 정적 메소드 제공  FileInfo : File 클래스와 하는 일은 동일하지만 정적 메소드 대신 인스턴스 메소드 제공 ( 여러 작업 ) Directory : 디렉토리의 생성, 삭제, 이동, 조회를 처리하는 정적 메소드 제공 DirectoryInfo : Directory 클래스와 하는 일은 동일하지만 정적 메소드 대신 인스턴스 메소드를 제공 ( 여러 작업 ) * File/FileInfo 와 Directory/DirectoryInfo의 ..

[ 공 부 ]/[ C# ] 2025.01.29