Collection
컴퓨터공학에서 흔히 '자료구조'라고 부르는 영역의 내용으로,
데이터를 특정한 방식으로 저장하는 방법이다.
데이터의 활용 방법에 따라 저장하는 방식을 다르게 한다. (효율성)
같은 성격을 띠는 자료들을 모아주는 자료구조이다.
Delegate
(1) Comparison<T>
작으면 >0, 같으면 0, 크면 <0
int 형식으로 비교함.
(2) Predicate<T>
bool 형식으로 특정 조건에 맞는 변수들을 반환
(3) Action<T>
행동만 하고 반환하지는 않는 delegate.
ex) OnMove
(4) Func<T,TResult>
반환값이 필요한 delegate
(5) 람다
간단한 함수를 사용하기 위해 그것을 매번 정의하는 것이 불편하기 때문에 람다(무명함수)를 사용.
문법 : (입력) => 결과 (단, 입력이 한 개라면 소괄호 생략 가능함)
ex. 두 수를 더하는 함수 / (x,y) => x+y;
* 제네릭 델리게이트를 사용하는 이유 )
delegate를 사용하기 위해 순수한 delegate를 한 번 더 정의하는 것을 방지함.
데이터 이동 시 주의 사항 (값과 참조)
VS 에서 C# 작성 시 텍스트 색상의 의미
값, 구조체 : 연두색
참조, 클래스 : 초록색
데이터를 참조할 때, 여기저기 옮겨다니면서 사용할 때 주의할 것은,
내가 들고 있는 데이터가 값인지 참조인지 명확히 구분해야 한다는 점이다.
구조체를 포함한 값 형식과 String(C# 에서는 불변체로 지정했기 때문에)은 어떻게 옮겨도 문제가 없지만
참조형과 클래스의 경우 실제값은 Heap메모리에, 주소값은 Stack메모리에 저장되기 때문에 꼭 유의해야 한다.
추상 클래스와 인터페이스
(1) abstract class
= 해당 클래스를 추상화해서 new로 생성할 수 없게 함.
추상 클래스 내부에 생성한 abstract 는 상속받은 모든 자식 클래스들이 같은 함수를 구현시키도록 강제하는 역할을 한다.
상속받은 자식클래스는 override를 사용해서 해당 abstract 메서드를 가져와 반드시 구현해야한다.
(2) interface
= 다른 언어들의 다중 상속에서 발생하는 책임 소재의 문제점을 해결하기 위해 등장.
C#에서 다형성을 구현하는 중요한 개념.
동일한 메서드를 가지고 있어도 다르게 동작해야 하는 여러 객체를 관리할 때 인터페이스가 효율적이다.
인터페이스는 클래스 형태를 갖지 않고 동작의 구현에 초점을 맞춘다.
클래스가 이런 인터페이스를 구현함으로써 특정 개체 간 일관된 동작을 보장하게 된다.
(3) virtual 과 override
virtual : 상위 클래스에 존재, 하위에서 구현할 수 있도록 임시적으로 메서드 틀을 만들어 놓음.
override : 하위 클래스에서 virtual 형식을 받아와서 실제로 출력할 데이터를 채워 넣음.
abstract와 virtual의 차이
- virtual은 기본 틀을 제공할 뿐, 하위 클래스에게 실제 구현을 강요하지는 않는다.
- 하지만 abstract의 경우 하위 클래스가 반드시 부모 클래스의 함수를 가져와서 구현해야만 한다.
'게임 개발 일지 > 내일배움캠프 TIL' 카테고리의 다른 글
Item 로직 초안 (0) | 2024.01.04 |
---|---|
오버로딩과 오버라이딩 / 오브젝트 풀링 (1) | 2024.01.02 |
Array와 List의 차이 (0) | 2023.12.28 |
(C#) 메모리 관리 / Generic Class (1) | 2023.12.27 |
안 좋은 코드 시리즈 4탄 (1) | 2023.12.26 |
댓글