Language/C# 19

c# - 멀티스레드(3)

Task, async, await- 간편하게 멀티스레드를 구현하기 위한 기능- Task, Task비동기 작업을 나타내는 객체비동기 작업의 완료, 실행, 또는 함수 실행 결과를 반환하는 역할을 수행- async메소드 선언 앞에 async가 있다면 비동기로 실행이 가능한 메소드void, Task 또는 Task만 반환할 수 있으나, void 반환 시 호출하는 쪽에서 비동기 처리가 불가능await을 통해 호출되어야 비동기로 작동함- await 작업이 끝나기를 기다리지만 스레드를 멈추지는 않음Task 또는 Task 반환하는 메소드만 기다릴 수 있음async로 선언된 메소드에서만 사용 가능  - async로 선언되고 Task를 반환하는 메소드를 async로 선언된 다른 메소드에서 await로 호출해서 사용하는 것이..

Language/C# 2025.01.21

Sc# - 멀티스레드(2)

BackgroundWorker- DoworkBackgroundWorker가 UI 스레드와 별개로 수행할 메소드를 지정- progressChangedDoWork()로 지정된 메소드에서 ReportProgress() 메소드가 호출되면 반복적으로 실행되는 메소드를지정ReportProgress()는 0~100 사이의 값을 입력 받을 수 있음    ex) this.worker.ReportProgress(0);- RunWorkerCompletedDoWork() 메소드가 끝나면 1회 동작하는 메소드를 지정- RunWorkerAsync() BackgroundWorker를 실행시키는 메소드   ex) this.worker.RunWorkerAsync();- 프로그래스 바를 만들 때, while 문을 사용하여 바를 채우게 ..

Language/C# 2025.01.21

c# - 멀티 스레드(1)

Thread 란?- Process를 구성하는 작업 수행 주체- 단일 스레드 와 멀티 스레드 차이- 메모리에서 스레드 공유 유무멀티 스레드- 스레드는 함수 단위로 동작함- 하나의 프로세스(프로그램)에 여러 개의 스레드를 만들면 OS(ex.윈도우)가 스레드의 실행 순서를 정함의도적으로 스레드의 실행 순서를 제어할 수 없음- 스레드의 소스코드가 아직 전부 실행되지 않았는데, OS가 다른 스레드를 실행하여 갑자기 다른 코드가 작동되는 것을 Context Switching이라고 함- 멀티 스레드 방식은 단일 스레드 방식 대비 메모리 절약, 속도 개선과 같은 장점이 있음- 현재는 위도우, 맥, 안드로이드, iOS 등 대부분의 운영체제에서 동작하는 거의 모든 프로그램들은 멀티 스레드로 동작함- Context Swit..

Language/C# 2025.01.07

c# - 컬렉션

컬렉션이란?- 배열처럼 데이터 집합을 다루는 클래스- 제네릭을 제외한 컬렉션은 자료형에 상관 없이 데이터를 추가하는 것이 가능컬렉션 - Array- 배열을 제어하는 메소드 모음컬렉션 - Stack컬렉션 - Queue컬렉션 - Hashtable제네릭 컬렉션이란?- 보통의 컬렉션과 다르게 제네릭은 타입을 선택하여 해당 타입만 추가 가능- 기능적 제한이 있지만 안정성이나 속도면에서 제네릭이 유리함제네릭 컬렉션 - Stack, List제네릭 컬렉션 - Dictionary

Language/C# 2025.01.07

c# - 예외 처리

예외 처리란?- 프로그램이 실행 중 특정 문제가 발생했을 때 다른 처리 방식으로 흐름을 옮기는 개념- try오류가 발생할 가능성이 있는 소스코드를 작성예상 가능한 오류는 throw를 통해 의도적으로 catch를 작동시킴- catchtry 안에서 오류 발생 시 자동으로 catch로 넘어옴오류에 대한 내용이 적혀 있는 Exception 클래스 인스턴스를 전달 받을 수 있음원하는 종류의 오류별로 각각 catch 문을 작성할 수 있음- finally (선택)try가 정상적으로 수행되거나, catch를 통해 문제가 해결된 경우 실행try에서 문제가 발생했으나 catch로 해결하지 못한 경우 실행 안됨

Language/C# 2025.01.07

c# - 다형성(업캐스팅), 오버로드/오버라이드

다형성이란?- 부모 클래스에 자녀 클래스의 인스턴스를 생성하는 것- 반대의 경우(다운 캐스팅)도 특정 조건을 만족하면 가능하지만 일반적으로 사용되지는 않음- 보통 상위 개념의 객체에 하위 개념을 바꿔가면서 사용할 때 활용ex) 화폐 = new 원, 화폐 = new 달러 메소드 오버로드- 같은 이름, 다른 입출력을 갖는 메소드를 정의하고 필요에 따라 골라 사용메소드 오버라이드- 상속 관계에서 부모 클래스의 메소드와 같은 이름의 메소드를 자식 클래스에서 작성하여 부모 메소드의 기능 대신 작동시킴- 부모 클래스 메소드에는 virtual , 자식 클래스 메소드에는 override 키워드를 사용하여 오버라이드 관계를 표시가상 메소드- virtual 키워드를 사용하여 업캐스팅을 할 경우 자식 메소드가 실행되도록 함..

Language/C# 2025.01.06

c# - 클래스 상속

클래스 상속이란?- 객체 간의 공통된 필드 및 메소드를 모아서 관련성이 있는 객체끼리 공유하는 것- 여러 차례에 걸쳐 상속하는 것은 가능하나, 한 번에 여러 개의 상속을 받는 것은 불가능(대시 인터페이스를 이용)- 클래스 설계의 핵심은 상속 관계를 어떻게 나눌지 결정하는 것이라고도 할 수 있음클래스 다이어그램(UML)- 클래스 설계를 문서로 그릴 때 사용하는 표준 표기 방법- UML 작성 도구에 따라 자동으로 소스코드를 생성해주는 기능을 포함- drawIo : https://app.diagrams.net상속 사용 방법- 자식 클래스 이름 : 상속 받을 부모 클래스 이름- 부모 클래스의 public, internal, protected로 선언된 부분을 사용 가능- 여러 차례 클래스를 상속 받는 것도 가능-..

Language/C# 2025.01.06

c# - 객체지향 프로그래밍

객체지향 프로그래밍이란?- 객체지향 프로그래밍(OOP : Object Orient Programming)에 있어서 객체(Object)를 표현하는 방식- 객체(클래스)는 속성(필드) + 기능(메소드)을 가짐- c#은 철저한 객체지향 프로그래밍 언어- 객체 간의 상호 작용 관계로 프로그램을 해석- 객체 단위로 데이터의 입출력이 이루어지기 때문에 필연적으로 작성하는 소스코드가 늘어남- 객체를 어떻게 정의할 것인지, 어떤 단위로 구분할 것인지, 각종설계와 관련된 작업들이 늘어남- 소스코드의 재사용성, 범용성이 높아지고, 직관적인 업무 분담이 가능하고, 복잡한 기능을 직관적으로 표현이 가능하고, 유지보수가 쉬워짐

Language/C# 2024.12.26

c# - 반복문

반복문이란?- 특정한 조건 또는 횟수를 지정하여 원하는 만큼 코드를 반복 실행- 반복문을 중첩하여 사용할 경우 퍼포먼스가 기하급수 적으로 떨어짐- for 문 반복 횟수를 기준으로 함반복 횟수를 배열의 Index로 활용하는 경우가 많음- foreach 문배열 순차 탐색에 특화 (편리성을 위해 기능을 희생)- while 문반복 조건을 기준으로 함반복 조건이 허락한다면 무한히 반복하는 용도로도 사용for 문- 반복 횟수를 기준으로 함- for(첫 시작 값; 조건; 값의 증감) - 배열과 함께 사용할 경우foreach 문- 배열 전체를 순차적으로 탐색할 경우에 편리하게 사용 가능while 문- 조건을 기준으로 반복- 무한 반복을 수행할 경우 자주 이용됨- while(조건){...} break, continue-..

Language/C# 2024.12.20