728x90
반응형

C#/C# 교과서 34

[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# 교과서] 52. 클래스 라이브러리와 닷넷 스탠다드

클래스 라이브러리 프로젝트 윈도 환경에서 콘솔 앱 프로그램으로 컴파일 된 결과물은 일반적으로 *.exe 파일 하지만 클래스 라이브러리 프로젝트를 사용하면 컴파일된 결과물이 *.dll 파일 DLL 파일을 동적 링크 라이브러리(dynamic link library)라고 함 단독으로 실행하지 않고 다른 프로그램에서 참조해 사용할 수 있는 구조 어셈블리 DLL 파일은 어셈블리로 표현 어셈블리는 프로그래밍 학습용 자동차 세계에서는 교체 가능한 부품들을 의미 완성된 조각 하나의 기능이 모두 어셈블리 C#에서 컴파일된 소스 코드의 결과를 닷넷 어셈블리(.Net Assembly)라고 함

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# 교과서] 46~47. 특성과 리플렉션, 개체와 개체 지향 프로그래밍

Obsolete 특성 [Obsolete] void OldMember() => Console.WriteLine("Old Method"); OldMember(); // 하면 밑줄이 생기고 마우스를 올리면 경고 메시지가 표시 Obsolete 특성은 라이브러리 또는 프레임워크를 제작할 때 기존 하위 호환성을 위해 코드를 남겨 놓지만, Obsolete 특성이 적용된 메서드는 사용하지 않도록 권장하는 목적이 강함 특성의 매개변수 위치 매개변수 : 특성에 전달되는 매개변수는 위치에 따라 구분됨 이름 매개변수 : 특성에 구현된 속성 또는 필드에 값을 전달할 때 사용 Conditional 특성 특정 기호에 따라 실행 여부 결정 [Conditional("DEBUG")] static void DebugMethod() => ..

C#/C# 교과서 2023.01.30

[C# 교과서] 44~45. 메서드 오버라이드, 인터페이스

메서드 오버라이드 : 재정의 클래스 관계를 따지는 상속 개념에서 부모 클래스에 이미 만든 메서드를 동일한 이름으로 자식 클래스에서 다시 정의(재정의)해서 사용한다는 개념이 메서드 오버라이드 메서드 오버라이드는 메서드를 새롭게 정의하는 것 오버라이드, 오버라이딩이라는 표현은 동일 부모 클래스에 virtual 키워드로 선언해 놓은 메서드는 자식 클래스에서 override 키워드로 재정의해서 사용 가능 상속 관계에서 메서드 오버라이드 public class Parent { public void Say() => Console.WriteLine("부모_안녕하세요"); public void Run() => Console.WriteLine("부모_달리다"); public virtual void Walk() => Co..

C#/C# 교과서 2023.01.30

[C# 교과서] 42~43. 클래스 기타, 상속으로 클래스 확장하기

부분 클래스 클래스를 선언할 때는 partial 키워드를 붙여 CS 파일 여러개로 클래스를 분할하고, 컴파일할 때는 클래스 하나로 컴파일하도록 만들 수 있는 기능이 추가 // Hello 클래스의 첫 번째 파일 : FirstDeveloper.cs using System; namespace PartialClassDemo { public partial class Hello { public void Hi() => Console.WriteLine("FirstDeveloper.cs"); } } // Hello 클래스의 두 번째 파일 : SecondDeveloper.cs using System; namespace PartialClassDemo { public partial class Hello { public voi..

C#/C# 교과서 2023.01.27

[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
728x90
반응형