C#13 [C#] 직렬화 (Serialization) 직렬화 직렬화는 클래스의 객체를 바이너리화하는 것 => 클래스 내부에 있는 데이터, 변수 등의 값들을 byte 형식의 데이터로 만드는 것 쉽게 말하면 클래스 객체의 상태를 그대로 컴퓨터 환경에 저장하고 나중에 재구성할 수 있는 포맷으로 변환하는 과정 => 데이터 파일 형태로 영구 저장 장치에 저장함 먼저 알아야 할 내용 기본적으로 C# 환경에서는 데이터 형식을 스트림에 쓰고 읽을 수 있도록 관련 메서드가 제공된다. (BinaryWriter/Reader 와 StreamWriter/Reader) 하지만 복합 데이터 형식을 기록하고 읽으려면, 그 형식이 갖고 있는 필드의 값을 순서에 따라 저장하고 읽는 코드를 작성해야 한다. 그래서 C# 환경에서 복합 데이터 형식을 쉽게 읽기 / 쓰기 할 수 있는 직렬화 (S.. C# 2021. 11. 12. [C#] 구조체 (Struct) 구조체 구조체는 사용자 정의 데이터 유형으로 기본적으로 제공되는 변수 유형이 아님 => 새로운 데이터 유형으로 사용자가 직접 정의하여 사용함 클래스의 참조형식과 달리 구조체는 값 형식 참조 먼저 알아야 할 내용 값 형식 참조와 참조 형식의 차이 (Value type reference, Reference type reference) 클래스는 Heap 에 인스턴스가 생성 및 할당되고 Stack 에 변수로 주소 값을 설정함 (인스턴스에 대한 참조를 포함) 구조체는 Stack 에 할당되고 생성과 복사 모두 각각의 변수에 포함된 인스턴스에게 이루어짐 (인스턴스를 포함) => 구조체 변수에 다른 변수를 대입할 경우, 참조 값이 변하는게 아니라 값 형식으로 구조체가 복사됨 구조체는 매개변수가 없는 생성자를 만들 수 .. C# 2021. 10. 22. [C#] 얕은 복사와 깊은 복사 (Shallow Copy & Deep Copy) 얕은 복사와 깊은 복사 C# 의 클래스는 기본적으로 참조 형식 스택 영역에 있는 참조가 힙 영역에 할당된 객체의 메모리를 가리킴 (참조값) 얕은 복사는 객체의 참조만 복사하는 것 (단순 복사) 깊은 복사는 객체를 복사하여 '새로운 객체' 를 만드는 것 (복사본 / 전체 복사) 먼저 알아야 할 내용 할당 (Assign) 일반적으로 생성된 객체를 다른 변수로 참조할 경우를 '할당' 한다고 함 얕은 복사 얕은 복사는 아래의 간단한 코드를 예시로 볼 수 있음 * 포인터는 참조값이 정말 동일한지 판단하기 위한 목적으로 작성하였으며, 실제 적용 시에는 필요하지 않음 혹시나 이해가 되지 않는다면, 다른 변수와 클래스를 예시로 한 아래의 그림을 참고 위의 내용을 얕은 복사라고 하기도 하지만, .NET 프레임워크에서 제.. C# 2021. 10. 15. [C# 자료구조] LinkedList, SortedList LinkedList 와 SortedList 2개의 자료구조 모두 List 에서 파생된 클래스 LinkedList 는 데이터를 포함하는 노드들을 연결하여 각 노드가 데이터와 다음/이전 링크 포인터를 갖게 되는 자료구조 (앞/뒤, 이중 연결 리스트 형태) LinkedList 는 특정 노드에서 삽입, 삭제가 편리하나 특정 노드를 검색하기 위해서는 시간이 다소 걸림 [O(n)] SortedList 는 Hashtable 과 ArrayList 의 혼합형이며 내부 데이터는 Key 와 Value 로 이루저져 있고, Key 와 Index 로 접근 가능 SortedList 는 내부적으로 정렬된 컬렉션을 유지하고 있다는게 큰 특징임 (정렬은 Value 이 아닌 별도의 Key 를 통해 정렬하고, Key 는 중복이 불가능함) .. C#/자료구조 2021. 10. 11. [C# 자료구조] Hashtable, Dictionary Hashtable 과 Dictionary 키 (Key) 와 값 (Value) 를 한쌍으로 저장됨 (공통) 키 (Key) 값은 유일해야 함 (공통) 키를 통한 값을 찾아서 탐색 속도가 빠름 (공통) Hashtable 은 선언 시, 자료형을 명시하지 않음 (ArrayList 와 동일) Dictionary 는 선언 시, 특정 자료형을 명시해야함 (나머지는 Hashtable 과 동일) Hashtable 보다 Dictionary 가 연산속도가 빠름 (모든 타입을 받는지 여부에 따른 차이) 선언 & 사용 방법 마무리 Hashtable 과 Dictionary 의 속성 및 메서드에 대한 정보는 참고자료를 확인 참고자료1 참고자료2 참고자료3 참고자료4 참고자료5 참고자료6 C#/자료구조 2021. 10. 3. [C# 자료구조] Stack, Queue Stack 과 Queue Stack 은 나중에 들어온 데이터가 먼저 나가는 선입선출 (LIFO) 방식 (Enqueue, Dequeue) Queue 는 먼저 들어간 데이터가 먼저 나가는 선입선출 (FIFO) 방식 (Push, Pop) 두 자료구조 모두 데이터와 작업을 순서대로 입력하고 차례대로 처리하기에 용이함 선언 & 사용방법 마무리 되돌리기, 뒤로가기 등의 기능을 구현한다면 스택 (Stack) 이 예시로 적합 여러 도전과제를 한꺼번에 달성했을 경우에 차례대로 뜨는 알림 기능을 구현한다면 큐 (Queue) 가 적합 스택과 큐의 자세한 설명 자료 참고자료1 참고자료2 참고자료3 (이미지 출처) C#/자료구조 2021. 9. 26. [C# 자료구조] ArrayList, List ArrayList 와 List ArrayList 는 길이가 고정되지 않는 추가 & 삭제의 변형이 가능한 가변형 객체 타입 (동적 배열) ArrayList 는 서로 다른 타입의 데이터를 배열에 저장 가능 => (박싱과 언박싱이 발생함) List 도 동일하게 동적 배열 List 는 ArrayList 의 단점을 보완하여 같은 타입만 저장이 가능함 => (박싱과 언박싱이 발생하지 않음) 특별한 목적이 없다면 ArrayList 를 사용하는 것은 권장하지 않음 선언 & 사용 방법 마무리 처음에 장단점을 몇몇 포함한 내용이 있기 때문에 일부 내용은 생략함 ArrayList 와 List 의 속성 및 메서드 그리고 성능에 대한 정보나 이슈는 참고자료를 확인 박스와 언박싱이란? (매우 중요한 정보) 참고자료1 (정리형) .. C#/자료구조 2021. 9. 20. [C# 자료구조] Array Array 데이터 형식이 같은 변수를 한번에 모아놓은 데이터의 집합이며, 자료구조 중에서 가장 기본이 되는 데이터 타입 기본적으로 배열의 데이터 형식은 값 형식, 배열 변수는 참조 형식 선언 방법 * 만약 데이터 타입이 참조 형식일 경우에는 요소들이 null 참조로 초기화됨 사용 방법 응용 방법 장단점 인덱스를 통한 검색이 용이함 연속된 메모리 공간으로 이루어져 있기 때문에 메모리 관리가 편함 크기가 고정되기 때문에 배열 요소가 삭제되면, 빈 공간으로 남겨두어야 함 (메모리 낭비) 컴파일 이전에 배열의 크기를 정해야함 (정적 배열) 컴파일 이후에 배열의 크기를 변동하기 어려움 (동적 배열은 가능) 마무리 이외에 가변 배열과 배열의 속성과 메서드 그리고 배열 종류별 성능에 대한 정보는 참고자료로 확인 참고.. C#/자료구조 2021. 9. 12. [C# / Unity] 디자인 패턴 - 싱글톤 패턴 싱글톤 패턴의 경우, 이 글에 굳이 예시를 적지 않아도 될 정도로 이미 많은 자료들이 나와있다. (거의 다른 패턴들보다도 비교적 참고자료가 많은 게 아닐까라는 생각이 든다) 패턴에 대한 설명은 glikmakesworld.tistory.com/2 유니티 디자인패턴 - 싱글톤 (Unity Design Patterns - Singleton) 싱글톤 패턴은 초보 개발자들이 가장 많이 쓰는 디자인 패턴이 아닐까 싶다. 클래스 구조를 짜다보면 다른 클래스의 함수를 사용해야 할 수도 있고, 전체 클래스들이 공유하는 전역변수가 필요 glikmakesworld.tistory.com wergia.tistory.com/192 [Unity3D] Programming - 유니티에서의 싱글톤 패턴 활용 Programming - .. C#/디자인 패턴 2021. 4. 25. [C# / Unity] 디자인 패턴 - 추상 팩토리 추상 팩토리는 이전 패턴 일지에 있었던 팩토리 관련 패턴 참고 자료에 나와있는 내용과 예시가 가장 이해하기 쉽고 적절한 것 같아서 그대로 여기에 적는 것 보다는 해당 자료를 참고하는게 좋을 것 같다. glikmakesworld.tistory.com/5 유니티 디자인패턴 - 팩토리(심플팩토리, 팩토리 메소드, 추상팩토리) (Unity Design Patterns - Factory) 흔한 프로그래밍 언어서 새로운 인스턴스를 만들 때 new를 사용한다. 만약 내 게임의 스테이지1에서 그린고블린을 만든다면 아래와 같이 만들것이다. GreenGoblin greenGoblin = new GreenG glikmakesworld.tistory.com 앞서 알아봤던 2개의 패턴보다는 좀 더 세부적으로, 조립식 부품을 끼.. C#/디자인 패턴 2021. 4. 18. [C# / Unity] 디자인 패턴 - 팩토리 메서드 ※ 읽기 전에 한번 숙지하면 좋은 내용 math-development-geometry.tistory.com/40 C# - 추상 클래스, 가상 클래스 - abstract, virtual 사용법 지난 포스팅 인터페이스에서 잠시 언급된 추상과 가상에 대한 이야기를 하도록 하겠습니다. 추상과 가상을 먼저 이야기 했으면 좋았겠지만, 제 포스팅은 그냥 의식의 흐름으로 적는 포스팅이기 math-development-geometry.tistory.com glikmakesworld.tistory.com/5 유니티 디자인패턴 - 팩토리(심플팩토리, 팩토리 메소드, 추상팩토리) (Unity Design Patterns - Factory) 흔한 프로그래밍 언어서 새로운 인스턴스를 만들 때 new를 사용한다. 만약 내 게임의 .. C#/디자인 패턴 2021. 4. 11. [C# / Unity] 디자인 패턴 - 심플 팩토리 ※ 읽기 전에 한번 숙지하면 좋은 내용 math-development-geometry.tistory.com/40 C# - 추상 클래스, 가상 클래스 - abstract, virtual 사용법 지난 포스팅 인터페이스에서 잠시 언급된 추상과 가상에 대한 이야기를 하도록 하겠습니다. 추상과 가상을 먼저 이야기 했으면 좋았겠지만, 제 포스팅은 그냥 의식의 흐름으로 적는 포스팅이기 math-development-geometry.tistory.com glikmakesworld.tistory.com/5 유니티 디자인패턴 - 팩토리(심플팩토리, 팩토리 메소드, 추상팩토리) (Unity Design Patterns - Factory) 흔한 프로그래밍 언어서 새로운 인스턴스를 만들 때 new를 사용한다. 만약 내 게임의 .. C#/디자인 패턴 2021. 4. 4. 이전 1 2 다음