목록
반응형
C# 기초 (
반응형
40)
개발꿈나무
함수와 함수형 프로그래밍 C#은 본래 OOP(개체 지향 프로그래밍) 기반의 프로그래밍 언어이지만 C#은 절차 지향과 더불어 함수형 프로그래밍 스타일을 지원한다. 함수형 프로그래밍은 함수 형태로 계산을 진행하고, 변경되는 변수 사용을 멀리하는 스타일을 의미한다. 함수형 프로그래밍 프로그래밍을 작성할 때 사용할 수 있는 가장 일반적인 프로그래밍 패러다임에는 절차 지향, 개체 지향, 함수형이 있다. 함수형 프로그래밍은 상태 값을 가지지 않는 함수들을 연속으로 호출해서 사용하는 개발 스타일로 볼 수 있는데 대표적인 예로 메서드 체이닝을 사용하는 LINQ의 확장 메서드들을 뽑을 수 있다. 문과 식 C#의 문법은 문(statement)과 식(expression)으로 표현하는데 가장 간단한 차이는 문은 여러 줄로 표..
네트워크 프로그래밍 C#에서 다루는 데이터는 인메모리, 파일, XML과 JSON을 포함하여 여러 데이터를 인터넷 같은 네트워크를 통해 주고받을 수 있다. HttpClient 클래스로 웹 데이터 가져오기 닷넷에서 제공하는 HttpClient 클래스를 사용하면 인터넷에 견결된 네트워크상의 데이터를 가져오거나 전송할 수 있다. using System; using System.Net.Http; using System.Threading.Tasks; class HttpClientDemo { static async Task Main() { //[1] HttpClient 개체 생성 HttpClient httpClient = new HttpClient(); //[2] GetAsync() 메서드 호출 HttpRespons..
XML과 JSON XElement 클래스를 사용하여 XML 요소를 생성하거나 가공하기 XElement 클래스는 XML 요소를 생성하거나 담을 수 있는 그릇이다. using System; using System.Linq; using System.Xml.Linq; class XElementDemo { static void Main() { //[1] XML 요소 생성 XElement category = new XElement("Menus", new XElement("Menu", "책"), new XElement("Menu", "강의"), new XElement("Menu", "컴퓨터") ); Console.WriteLine(category); //[2] XML 요소 가공 XElement newCategory ..
스트림과 파일 입출력 프로그램 코드에서 작성된 데이터를 목적에 따라 영구적으로 보관해야 할 때가 있는데, 이때는 파일이나 데이터베이스에 저장한다. 파일에 데이터를 저장하고 이를 사용해보자. System.IO 네임스페이스 C#에서 파일에 대한 입력과 출력을 담당하는 네임스페이스는 System.IO이며, 수많은 파일과 디렉터리 관련 클래스를 제공한다. File.Exists(): 지정된 경로에 파일이 있으면 true, 없으면 false 반환 new DirectoryInfo().Parent.FullName: 지정된 경로의 부모 폴더 값 반환 Path.GetDirectoryName(): 지정한 경로의 디렉터리 값 반환 Path.Combile(): 졍로 2개를 합치거나 경로와 파일 이름을 묶어서 반환 Directo..

인메모리 데이터베이스 프로그래밍 현대적인 응용 프로그램(앱)은 대부분 앱에서 사용하는 데이터를 데이터베이스에 저장한다. C#에서는 이러한 DBMS와 데이틀 주고받는 클래스를 ㄷ수 제공하는데 이러한 클래스의 집합을 ADO.NET이라고 한다. 인메모리 데이터베이스 인메모리 데이터베이스(in-memory database)는 특별한 개념이 아니고 지금까지 우리가 사용한 변수, 배열, 구조체, 클래스 등에 저장되는 데이터를 다루는 기술이라고 생각하면 된다. 인메모리 기술이기에 프로그램을 실행하고 메모리에 저장된 데이터는 프로그램이 종료되면 자동으로 소멸하는데 이렇게 메모리에 임시로 저장된 데이터들을 파일 또는 데이터베이스에 저장하여 영구적으로 보관할 수 있다. CRUD 작업하기 데이터베이스를 다룰 때 Create..
비동기 프로그래밍 C#은 async와 await 키워드를 제공하여 손쉽게 비동기 프로그래밍(asynchronous programming)을 구현할 수 있다. 동기(synchronous)는 프로그램은 순서대로 실행됨을 의미하며 프로그램은 기본적으로 동기로 실행된다. 비동기(asynchronous) 프로그램은 메서드 여러 개를 동시에 실행하거나 대기 시점을 변경하여 순서를 재정의할 수 있다. 동기는 실행하는 동안 스레드가 차단되는 차단(blocking)코드를 나타내고 비동기는 스레드가 차단되지 않는 비차단(non blocking) 코드를 나타낸다. 동기 프로그래밍 using System; class SyncDemo { static void Sum(int a, int b) => Console.WriteLine..
스레드 닷넷에서 스레드(thread)는 작업자 한명을 나타낸다. 다중 스레드 또는 다중 스레딩은 여러 작업자를 두고 동시에 여러 작업을 처리하는 것을 의미한다. 스레드 스레드는 순차적으로 처리되지 않고, 여러 기능을 동시 다발적으로 실행할 떄 사용하는 개념이며 이를 닷넷에서는 Thread 같은 클래스로 제공한다. C#에서 스레드를 만들 때는 System.Threading 네임스페이스에 정의된 ThreadStart 대리자를 사용해야 한다. public delegate void ThreadStart(); ThreadStart 대리자로 스레드를 선언할 수도 있다. 스레드를 담은 메서드를 여러 개 구현해 놓고 이를 ThreadStart 대리자에 등록하면 된다. using System.Threading; clas..

NuGet 패키지 NuGet 패키지로 자신이 만든 라이브러리를 전 세계 개발자와 공유할 수 있으며 전 세계 개발자가 만든 유용한 라이브러리 및 프레임워크를 NuGet에서 내려받아 프로젝트에 포함시킬 수 있다. 패키지 관리자와 NuGet 우리가 만든 DLL 파일을 전 세계 개발자와 공유하고자 한다면 DLL 파일을 직접 전달하거나, NuGet 공식 사이트(https://nuget.org)에서 어셈블리 같은 패키지를 공유할 수 있다. NuGet 패키지 만들기 1. 프로젝트에서 마우스 오른쪽 버튼을 눌러 속성(Preperties)을 선택한다. 2. 속성창에서 패키지(Package) 탭을 클릭한 후 다음과 같이 패키지 버전, 작성자, 회사, 제품, 설명 등 항목을 입력한다. 빌드시 NuGet 패키지 생성(Gene..

테스트 프로젝트와 단위 테스트 자동 테스트 특정한 API 테스트를 작성해 놓으면 필요할 때 자동으로 진행할 수 있는데 자동 테스트를 진행하면 다음과 같은 장점이 있다. 에러를 쉽게 찾고 수정할 수 있다. 직접 하나씩 테스트하는 것보다 아주 빠르게 많은 수의 테스트를 진행한다. 작성한 코드 검증을 할 수 있다. C#에서 사용 가능한 단위 테스트 프로젝트 MSTest: 마이크로소프트 공식 단위 테스트 프로젝트 NUnit: JUnit 영향을 받은 오픈 소스 단위 테스트 프로젝트 xUnit: 닷넷 전용 오픈 소스 단위 테스트 프로젝트 Assert 클래스의 주요 API 미리 살펴보기 테스트 프로젝트에서 유용하게 사용할 수 있는 Assert 클래스가 있다. Assert 클래스는 굉장히 많은 메서드를 제공한다. As..

클래스 라이브러리와 닷넷 스탠다드 클래스 라이브러리는 재사용 가능한 코드를 DLL 파일로 압축해서 관리하는 기능을 제공한다. 비주얼 스튜디오에서 제공하는 클래스 라이브러리 프로젝트의 결과물로 만든 DLL 파일을 사용하면 여러 프로젝트에서 공통 코드를 관리할 수 있다. 클래스 라이브러리 프로젝트 윈도 환경에서 콘솔 앱 프로그램으로 컴파일된 결과물은 일반적으로 .exe 파일이지만 클래스 라이브러리 프로젝트를 사용하면 컴파일된 결과물이 .dll 파일로 만들어진다. DLL 파일을 동적 링크 라이브러리(dynamic link library)라고 하는데, 단독으로 실행하지 않고 다른 프로그램에서 참조해서 사용할 수 있는 구조로 되어 있다. 어셈블리 클래스 라이브러리 프로젝트는 결과물을 DLL 파일로 만드는데 단독으..