728x90
반응형

이론 18

[C# 교과서] 58. 스트림과 파일 입출력 맛보기

프로그램 코드에서 작성된 데이터는 목적에 따라 영구적으로 보관해야 할 때가 있음 이 때는 파일이나 데이터베이스에 저장 System.IO 네임스페이스 C#을 사용하여 파일에 대한 입력과 출력을 담당하는 네임스페이스는 System.IO File.Exists() : 지정된 경로에 파일이 있으면 true를 반환, 없으면 false 반환 new DirectoryInfo().Parent.FullName : 지정된 경로의 부모 폴더 값 반환 Path.GetDirectoryName() : 지정한 경로의 디렉토리 값 반환 Path.Combile() : 경로 2개를 합치거나 경로와 파일 이름을 묶어서 반환 Directory.Exists() : 지정된 디렉터리가 있는지 확인 Directory.CreateDirectory()..

C#/C# 교과서 2023.02.10

[C# 교과서] 57. 인메모리 데이터베이스 프로그래밍 맛보기

인메모리 데이터베이스 변수, 배열, 구조체, 클래스 등에 저장되는 데이터를 다루는 기술 프로그램을 실행하고 메모리에 저장된 데이터는 프로그램이 종료되면 자동으로 소멸 메모리에 임시로 저장된 데이터들은 파일 또는 데이터베이스에 저장하여 영구적으로 보관 가능 CRUD 작업하기 Create (입력) Read (출력) 또는 Retrieve (검색) Update (수정) Delete (삭제) 리포지토리 패턴 프로그래밍을 할 때 자주 사용하는 유형을 패턴이라고 함 데이터베이스 프로그래밍에서는 일반적으로 리포지토리 패턴이 가장 많이 사용 모델 클래스 (model class)는 데이터 구조를 나타냄 리포지토리 클래스(repository class)는 데이터에 대한 입력, 출력, 수정, 삭제 등을 담당하는 클래스를 의미..

C#/C# 교과서 2023.02.10

[C# 교과서] 56. 비동기 프로그래밍

C#에서는 async와 await 키워드를 사용하여 아주 쉽게 비동기 프로그램 구현 가능 동기 : 프로그램이 순서대로 실행됨을 의미. 프로그램은 기본적으로 동기로 실행 됨. 비동기 : 메서드 여러 개를 동시에 실행하거나 대기 시점을 변경하여 순서를 재정의할 수 있음 동기는 실행하는 동안 스레드가 차다되는 차단 코드를 나타냄. 비동기는 스레드가 차단되지 않는 비차단 코드를 나타냄. 동기 프로그래밍 비주얼 스튜디오의 디버거 기능을 사용하여 F10을 여러 번 누르면 코드가 호출한 순서대로 실행 동기 프로그램은 지금까지 우리가 사용한 메서드 호출 순서대로 실행되는 것 비동기 프로그래밍 쉽게 말해 한 번에 여러 작업을 수행할 수 있도록 도와주는 기능 파일, 데이터베이스, 네트워크 등에서 데이터를 가져올 때 시간이..

C#/C# 교과서 2023.02.09

[C# 교과서] 53. 테스트 프로젝트와 단위 테스트

자동 테스트 에러를 쉽게 찾고 수정 가능 직접 하나씩 테스트하는 것보다 아주 빠르게 많은 수의 테스트를 진행 작성한 코드 검증 MSTest MSTest : 마이크로소프트 공식 단위 테스트 프로젝트 NUnit : JUnit 영향을 받은 오픈 소스 단위 테스트 프로젝트 xUnit : 닷넷 전용 오픈 소스 단위 테스트 프로젝트 Assert 클래스의 주요 API Assert.IsTrue() : 매개변수 값이 true이면 테스트 통과 Assert.IsNull() : 매개변수 값이 null이면 테스트 통과 Assert.AreEqual() : 매개변수 값 2개가 같으면 테스트 통과 Assert.AreNotEqual() : 매개변수 값 2개가 다르면 테스트 통과

C#/C# 교과서 2023.02.08

[C# 교과서] 50~51. 동적형식, 튜플

동적형식 dynamic 키워드 C#에서는 dynamic 키워드를 사용하는 동적 형식을 제공 컴파일 타임에 형식이 지정되는 프로그램은 편함. 바로 int, string 형으로 변수를 선언한 후 해당 값을 사용하면 됨 런타임 형식이 지정되는 프로그램이 필요할 수 있음. 이때는 dynamiic 키워드를 사용하여 변수를 선언 dynamic 키워드는 데이터 형식 자리에 오지만, dynamic은 데이터 형식이 아님 var 키워드와 비슷하나 컴파일할 때 데이터 형식을 결정하는 var와 달리, dynamic 키워드는 런타임할 때 데이터 형식을 결정 모든 데이터 형식을 선언하는 자리에는 dynamic 키워드를 사용 가능 동적 형식은 다른 동적 언어와 통신에 유용 유일한 단점은 비주얼 스튜디오 인텔리센스의 도움을 받을 수..

C#/C# 교과서 2023.02.07

[C# 교과서] 48~49. 제네릭 클래스 만들기, 확장 메서드 만들기

사용자 정의 클래스를 매개변수로 사용하는 제네릭 클래스 - 성능 향상을 가져다 주는 기법을 제네릭 - 매개변수화된 형식을 만드는 데 사용 - 제네릭에 전달하는 매개변수를 형식 매개변수라고 함 컬렉션 이니셜라이저로 제네릭 리스트 초기화 using System; class Person { public string Name { get; set; } } class Main2 { static void Main() { List people = new List { new Person { Name = "이재현"}, new Person { Name = "이주연"}, new Person { Name = "김영훈"} }; foreach (var person in people) { Console.WriteLine(person..

C#/C# 교과서 2023.02.06

[C# 교과서] 40~41. 대리자, 이벤트

대리자(위임/델리게이트) 대리자(delegate)는 매개변수 목록 및 반환 형식이 있는 메서드 참조(포인터)를 나타내는 형식 대리자는 함수 자체를 데이터 하나로 보고 의미 그대로 다른 메서드를 대신 실행하는 기능 한 번에 메서드 하나 이상을 대신해서 호출 내부적으로 MulticastDelegate 클래스에서 기능을 상속 using System; class DelegateDemo { // 함수 생성 -> 매개변수도 없고 반환값도 없는 함수 static void Hi() => Console.WriteLine("Hi"); // 대리자 생성 -> 매개변수도 없고 반환값도 없는 함수를 대신 실행할 대리자 delegate void SayDelegate(); static void Main() { // Hi 함수를 s..

C#/C# 교과서 2023.01.18

[C# 교과서] 38~39. 속성, 인덱서와 반복기

속성 클래스의 멤버 중에서 속성은 단어 그대로 클래스 속성을 나타냄 괄호가 없는 메서드와 비슷 개체 필드 중에 외부에 공개하고자 할 때 사용하는 방법 코드에서는 private 성격이 있는 필드를 public 속성으로 외부에 공개할 때 사용 클래스 안에 선언된 필드 내용을 설정(set)하거나 참조(get)할 때 사용하는 코드 블록을 속성 class 클래스이름 { public [반환형식] 속성이름 {get; set;} } 속성 정의 구문의 마지막에는 세미콜론이 붙지 않음 속성을 선언과 동시에 특정한 값으로 초기화할 때는 세미콜론이 붙음 static을 붙여 정적인 속성을 만들 수 있음 속성에 값을 설정하는 것을 세터(setter) 값을 읽어오는 것을 게터(getter) class Person { private..

C#/C# 교과서 2023.01.17

[C# 교과서] 35~37. 생성자, 소멸자, 메서드와 매개변수

생성자 단어 그대로 개체를 생성하면서 무엇인가를 하고자 할 때 사용되는 메서드 생성자 이름이 클래스 이름과 동일 클래스 내에서 클래스 이름과 동일한 이름을 갖는 메서드는 모두 생성자 메서드와 마찬가지로 클래스에 매개변수를 달리하여 생성자를 여러개 만들 수 있음, 이를 생성자 오버로드 또는 오버로딩이라고 함 this 키워드를 사용해서 다른 생성자를 호출할 수도 있음 생성자도 메서드(함수)임 하지만 메서드와 달리 반환 형식을 지정 못함 또 static 생성자는 매개변수를 포함할 수 없으며, 매개변수를 사용하여 필드를 초기화할 때는 istance 생성자인 public 생성자를 사용해야 함 this() 생성자로 다른 생성자 호출하기 생성자에서 this()는 자신의 또 다른 생성자를 의미 this() 생성자로 매..

C#/C# 교과서 2023.01.11
728x90
반응형