C#
배열
이름 하나로 데이터 여러 개를 저장하는 데이터 구조
아래와 같이 선언할 수 있으며, 배열에 있는 데이터는 for문 또는 foreach문을 사용해 반복 출력할 수 있다.
int[] numbers;
numbers = new int[3];
int[] nums = new int[3];
1차원 배열
데이터형식[] 배열이름;
배열이름[인덱스]=값;
Console.WriteLine(배열이름[인덱스]);
배열의 크기를 얻으려면 [배열이름.Length] 형태로 Length 속성을 사용하면 된다.
다차원 배열
데이터형식[,] 배열이름; // 2차원 배열 선언
데이터형식[,,] 배열이름; // 3차원 배열 선언
다차원 배열 초기화: 배열 이름 = new 데이터 형식[요소개수, 요소개수]
arr1 = new int[2] {1,2};
arr2 = new int[2,2] {{1,2},{3,4}};
arr3 = new int[2,2,2] {{{1,2},{3,4}},{{5,6},{7,8}}};
절차지향 프로그래밍
순차적인 처리가 중요시되는 프로그래밍 기법, 프로그램 전체가 유기적으로 연결
컴퓨터의 작업 처리 방식과 유사해 객체지향 언어보다 빨리 처리
유지보수가 어려우며 코드 순서 변경 시 동일한 결과를 보장하지 않음
객체 지향 프로그래밍
좀 더 나은 프로그램을 만들기 위한 프로그래밍 패러다임
로직을 상태와 행위로 이루어진 객체로 만드는 것
어떠한 큰 카테고리의 부모 클래스(객체, 모델)를 기준으로 파생될 수 있는 하위 클래스를 정의
부모 객체로부터 기본적인 스펙(상태), 기능(행위)를 상속 받아 자식에서 그대로 사용하거나 확장 가능
클래스
형식/설계도, 각 형식/클래스 별로 하나만 존재, 객체가 어떤 데이터 항목을 가지는지 정의, 어떤 메소드를 가질지 정의
객체
메모리에 적재된 실체, 이론적으로 무한대로 생성 가능, 메모리 차지, 선언된 데이터 항목에 실제 데이터 저장, 정의되어 있는 메소드 실행
생성자 오버로딩
객체의 필드를 초기화하는 다양한 옵션 제공 가능
정적필드, 메소드
정적 필드: 모든 인스턴스가 공유하는 값
정적필드를 수정하면 해당 클래스의 모든 인스턴스에서 동일한 값이 변경됨
정적메소드: 클래스 수준에서 동작하는 메소드
클래스의 인스턴스를 만들지 않고도 호출할 수 있다.
상속
부모 클래스에서 정의된 필드, 메서드, 속성 등을 자식 클래스에서 그대로 사용할 수 있도록 해 줌으로써 코드 중복을 피하고 유지보수성을 높일 수 있다.
예외
예정된 프로그램 흐름에서 벗어나는 사건
예외 처리
예외가 프로그램의 오류나 다운으로 이러지지 않도록 적절히 처리하는 것
Try-Catch
예외처리를 위해 사용되는 구문으로, Try 내에 예외가 발생할 가능성이 있는 코드 작성, catch 블록에는 예외가 발생했을 때 실행될 코드 작성
예외가 발생하지 않으면 catch 블록은 실행되지 않는다.
System.Exception 클래스
모든 예외 클래스의 부모 클래스로 예외 발생 시 발생한 예외를 처리하는 데 사용된다.
Thow
예외를 발생시키는 키워드로 현재 실행 중인 메서드에서 예외를 발생시키며, 발생 시킨 예외를 호출자로 전달한다.
예외는 해당 메서드에서 처리되지 않은 상태로 호출자로 전달된다.
대리자(Delegate)
메소드의 참조를 담는 타입, 메소드를 변수처럼 사용할 수 있게 해준다.
Delegate를 사용하면 이벤트 처리, 콜백 등 다양한 시나리오에서 사용할 수 있다.
한정자 반환형식 델리게이트 이름(매개변수_목록);
이벤트
객체에 대한 특정 액션이 발생할 때 다른 객체에게 알리는 매커니즘
파일 정보와 디렉토리 정보 다루기
System.IO 네임 스페이스에 파일/디렉토리를 다루는 클래스 위치
File: 파일 생성, 복사, 삭제, 이동, 조회 처리 정적 메소드
FileInfo: File 클래스와 동일 기능 인스턴스 메소드
Directory: 디렉토리 생성, 복사, 삭제, 이동, 조회 처리 정적 메소드
DirectoryInfo: Directory 클래스와 동일 기능 인스턴스 메소드
파일 정보 출력
string filePath = @"C:\Users\Username\fileInfo.txt";
FileInfo fileInfo = new FileInfo(filePath);
Console.WriteLine($"File Name: {fileInfo.Name}");
Name 뿐만이 아니라 Length, CreationTime, LastAccessTime, LastWriteTime 등도 사용 가능
각각 파일의 이름, 경로, 크기, 생성 시간 등의 정보를 제공한다.
디렉토리 정보 출력
string dirPath = @"C]User\Username\Desktop";
DirectoryInfo dirInfo = new DirectoryInfo(dirPath);
Console.WriteLine("Directory Name: " + dirInfo.Name);
Name 뿐만 아니라 GetFiles().Length, GetDirectories().Length, Parent.FullName, Root.FullName 등도 사용 가능
이름, 경로, 포함된 파일 및 하위 디렉토리 등의 정보 제공
StreamWrite/StreamReader
StreamWrite: 생성자를 사용하여 파일의 경로 및 이름, 파일을 열 때 사용할 모드, 문자 인코딩 방식을 지정
StreamReader: 파일에서 문자열 데이터를 읽는데 사용, 파일모드, 문자 인코딩 방식 지정
스레드
다중 스레딩은 하나의 프로그램이 동시에 여러 가지 작업을 할 수 있도록 하는 것으로 각각의 작업을 스레드라고 한다.프로세스가 생성되면 스레드도 함께 생성되는데 부모 프로세스의 자원을 공유하기 때문에 새로 복사해올 필요가 없어 프로세스의 생성과 종료보다 오버헤드가 적다.스레드 하나가 상태를 바꿔도 다른 스레드나 부모 프로세스의 상태 변화에 영향을 끼치지 않는다.스레드 각각은 독립적으로 실행, 자원만 함께 사용1. 스레드가 실행할 메서드 선언2. 스레드의 인스턴스 생성. 생성자의 인수로 스레드가 실행할 메소드를 넘긴다.3. Thread.Start() 메서드를 호출해 스레드 시작4. Thread.Join() 메서드를 호출해 쓰레드가 끝날 때까지 기다린다.
인터럽트
스레드 임의 종료스레드를 강제로 종료시켜야 하는 경우 사용스레드가 Runnig 상태일 때 Intterupt()를 호출해두면 WaitSleepJoin 상태가 됐을 때 ThreadInterrupedExcepyion 발생
System.Threading.Tasks.Task
Task 클래스: 작업을 나타내는 객체비동기 작업이 완료될 시 해당 작업은 결과값을 반환하거나 예외 throwTask 클래스는 이러한 결과값 또는 예외를 나타내기 위해 result 및 Exception 프로퍼티 제공
Task<Tresult>
Task 클래스의 제네릭 버전: 비동기 작업이 완료되면 결과값을 반환하는 task를 나타낸다.Tresult는 task가 반환하는 값의 형식을 지정한다.
Async/await
비동기 코드를 작성하기 위해 사용된다.
async
해당 메서드가 비동기 메서드임을 나타내며 메서드, 이벤트 처리기, 태스크 등을 수식한다.C# 컴파일러가 async 한정자로 수식한 호출자를 만나면 호출 결과를 기다리지 않고 바로 다음 코드로 이동하도록 실행 코드를 생성한다.async로 한정하는 메소드는 반환 형식이 Task나 Task<TResult>, void 중 하나여야 한다.
await
비동기 작업의 완료를 기다리는 데 사용된다.async로 한정한 Task 또는 Task<TResult>를 반환하는 메서드/태스크/람다식은 await 연산자를 만나는 곳에서 호출자에게 제어 반환await 연산자가 없는 경우 동기로 실행
Winform.NET 데스크탑 app을 개발할 때 사용할 수 있는 두 가지 UI 라이브러리 중 하나로 익히기 쉽고 생산성이 뛰어나다.
Application 클래스Windows Forms app를 만들기 위한 기본 클래스로 윈도우 응용 프로그램을 시작/종료시키는 메서드를 제공하고 윈도우 메시지를 처리한다.System.Windows.Forms.Form 클래스에서 파생된 윈도우 폼 클래스를 선언한 후 Application.Run() 메서드에 인수로 넘겨 호출하는 것으로 윈도우 생성
System.Windows.Forms.Form
윈도우 자체를 표현하는 클래스, 이벤트에 대한 처리 코드 구현 간단
이벤트와 이벤트 처리기 연결
Windows Forms app에서 이벤트는 사용자의 동작 또는 시스템의 상태 변화와 같은 일반적인 상황에서 발생
이벤트는 이벤트 처리기라고 하는 메서드를 호출하도록 구성 가능
'TIL > 디지털트윈' 카테고리의 다른 글
07.27 디지털 트윈 부트캠프(OT) 19일차 (0) | 2023.07.27 |
---|---|
07.26 디지털 트윈 부트캠프(OT) 18일차 (0) | 2023.07.26 |
07.24 디지털 트윈 부트캠프(OT) 16일차 (0) | 2023.07.24 |
07.19 디지털 트윈 부트캠프(OT) 13일차 (0) | 2023.07.19 |
07.18 디지털 트윈 부트캠프(OT) 12일차 (0) | 2023.07.18 |
댓글