C#
C# 언어의 기초부터 심화까지 기술 내용을 기록하고 있습니다.

-
직렬화직렬화는 클래스의 객체를 바이너리화하는 것=> 클래스 내부에 있는 데이터, 변수 등의 값들을 byte 형식의 데이터로 만드는 것쉽게 말하면 클래스 객체의 상태를 그대로 컴퓨터 환경에 저장하고 나중에 재구성할 수 있는 포맷으로 변환하는 과정=> 데이터 파일 형태로 영구 저장 장치에 저장함 먼저 알아야 할 내용기본적으로 C# 환경에서는 데이터 형식을 스트림에 쓰고 읽을 수 있도록 관련 메서드가 제공된다.(BinaryWriter/Reader 와 StreamWriter/Reader) 하지만 복합 데이터 형식을 기록하고 읽으려면, 그 형식이 갖고 있는 필드의 값을 순서에 따라 저장하고 읽는 코드를 작성해야 한다. 그래서 C# 환경에서 복합 데이터 형식을 쉽게 읽기 / 쓰기 할 수 있는 직렬화 (Seriali..
[C#] 직렬화 (Serialization)직렬화직렬화는 클래스의 객체를 바이너리화하는 것=> 클래스 내부에 있는 데이터, 변수 등의 값들을 byte 형식의 데이터로 만드는 것쉽게 말하면 클래스 객체의 상태를 그대로 컴퓨터 환경에 저장하고 나중에 재구성할 수 있는 포맷으로 변환하는 과정=> 데이터 파일 형태로 영구 저장 장치에 저장함 먼저 알아야 할 내용기본적으로 C# 환경에서는 데이터 형식을 스트림에 쓰고 읽을 수 있도록 관련 메서드가 제공된다.(BinaryWriter/Reader 와 StreamWriter/Reader) 하지만 복합 데이터 형식을 기록하고 읽으려면, 그 형식이 갖고 있는 필드의 값을 순서에 따라 저장하고 읽는 코드를 작성해야 한다. 그래서 C# 환경에서 복합 데이터 형식을 쉽게 읽기 / 쓰기 할 수 있는 직렬화 (Seriali..
2021.11.12 -
구조체구조체는 사용자 정의 데이터 유형으로 기본적으로 제공되는 변수 유형이 아님=> 새로운 데이터 유형으로 사용자가 직접 정의하여 사용함클래스의 참조형식과 달리 구조체는 값 형식 참조먼저 알아야 할 내용값 형식 참조와 참조 형식의 차이 (Value type reference, Reference type reference)클래스는 Heap 에 인스턴스가 생성 및 할당되고 Stack 에 변수로 주소 값을 설정함 (인스턴스에 대한 참조를 포함)구조체는 Stack 에 할당되고 생성과 복사 모두 각각의 변수에 포함된 인스턴스에게 이루어짐 (인스턴스를 포함)=> 구조체 변수에 다른 변수를 대입할 경우, 참조 값이 변하는게 아니라 값 형식으로 구조체가 복사됨구조체는 매개변수가 없는 생성자를 만들 수 없음 => nul..
[C#] 구조체 (Struct)구조체구조체는 사용자 정의 데이터 유형으로 기본적으로 제공되는 변수 유형이 아님=> 새로운 데이터 유형으로 사용자가 직접 정의하여 사용함클래스의 참조형식과 달리 구조체는 값 형식 참조먼저 알아야 할 내용값 형식 참조와 참조 형식의 차이 (Value type reference, Reference type reference)클래스는 Heap 에 인스턴스가 생성 및 할당되고 Stack 에 변수로 주소 값을 설정함 (인스턴스에 대한 참조를 포함)구조체는 Stack 에 할당되고 생성과 복사 모두 각각의 변수에 포함된 인스턴스에게 이루어짐 (인스턴스를 포함)=> 구조체 변수에 다른 변수를 대입할 경우, 참조 값이 변하는게 아니라 값 형식으로 구조체가 복사됨구조체는 매개변수가 없는 생성자를 만들 수 없음 => nul..
2021.10.22 -
얕은 복사와 깊은 복사C# 의 클래스는 기본적으로 참조 형식스택 영역에 있는 참조가 힙 영역에 할당된 객체의 메모리를 가리킴 (참조값)얕은 복사는 객체의 참조만 복사하는 것 (단순 복사)깊은 복사는 객체를 복사하여 '새로운 객체' 를 만드는 것 (복사본 / 전체 복사)먼저 알아야 할 내용할당 (Assign)일반적으로 생성된 객체를 다른 변수로 참조할 경우를 '할당' 한다고 함 얕은 복사얕은 복사는 아래의 간단한 코드를 예시로 볼 수 있음* 포인터는 참조값이 정말 동일한지 판단하기 위한 목적으로 작성하였으며, 실제 적용 시에는 필요하지 않음 혹시나 이해가 되지 않는다면, 다른 변수와 클래스를 예시로 한 아래의 그림을 참고 위의 내용을 얕은 복사라고 하기도 하지만, .NET 프레임워크에서 제공하는 Ob..
[C#] 얕은 복사와 깊은 복사 (Shallow Copy & Deep Copy)얕은 복사와 깊은 복사C# 의 클래스는 기본적으로 참조 형식스택 영역에 있는 참조가 힙 영역에 할당된 객체의 메모리를 가리킴 (참조값)얕은 복사는 객체의 참조만 복사하는 것 (단순 복사)깊은 복사는 객체를 복사하여 '새로운 객체' 를 만드는 것 (복사본 / 전체 복사)먼저 알아야 할 내용할당 (Assign)일반적으로 생성된 객체를 다른 변수로 참조할 경우를 '할당' 한다고 함 얕은 복사얕은 복사는 아래의 간단한 코드를 예시로 볼 수 있음* 포인터는 참조값이 정말 동일한지 판단하기 위한 목적으로 작성하였으며, 실제 적용 시에는 필요하지 않음 혹시나 이해가 되지 않는다면, 다른 변수와 클래스를 예시로 한 아래의 그림을 참고 위의 내용을 얕은 복사라고 하기도 하지만, .NET 프레임워크에서 제공하는 Ob..
2021.10.15 -
LinkedList 와 SortedList2개의 자료구조 모두 List 에서 파생된 클래스LinkedList 는 데이터를 포함하는 노드들을 연결하여 각 노드가 데이터와 다음/이전 링크 포인터를 갖게 되는 자료구조(앞/뒤, 이중 연결 리스트 형태)LinkedList 는 특정 노드에서 삽입, 삭제가 편리하나 특정 노드를 검색하기 위해서는 시간이 다소 걸림 [O(n)]SortedList 는 Hashtable 과 ArrayList 의 혼합형이며 내부 데이터는 Key 와 Value 로 이루저져 있고, Key 와 Index 로 접근 가능SortedList 는 내부적으로 정렬된 컬렉션을 유지하고 있다는게 큰 특징임(정렬은 Value 이 아닌 별도의 Key 를 통해 정렬하고, Key 는 중복이 불가능함)선언 & 사용 ..
[C# 자료구조] LinkedList, SortedListLinkedList 와 SortedList2개의 자료구조 모두 List 에서 파생된 클래스LinkedList 는 데이터를 포함하는 노드들을 연결하여 각 노드가 데이터와 다음/이전 링크 포인터를 갖게 되는 자료구조(앞/뒤, 이중 연결 리스트 형태)LinkedList 는 특정 노드에서 삽입, 삭제가 편리하나 특정 노드를 검색하기 위해서는 시간이 다소 걸림 [O(n)]SortedList 는 Hashtable 과 ArrayList 의 혼합형이며 내부 데이터는 Key 와 Value 로 이루저져 있고, Key 와 Index 로 접근 가능SortedList 는 내부적으로 정렬된 컬렉션을 유지하고 있다는게 큰 특징임(정렬은 Value 이 아닌 별도의 Key 를 통해 정렬하고, Key 는 중복이 불가능함)선언 & 사용 ..
2021.10.11 -
Hashtable 과 Dictionary키 (Key) 와 값 (Value) 를 한쌍으로 저장됨 (공통)키 (Key) 값은 유일해야 함 (공통)키를 통한 값을 찾아서 탐색 속도가 빠름 (공통)Hashtable 은 선언 시, 자료형을 명시하지 않음 (ArrayList 와 동일)Dictionary 는 선언 시, 특정 자료형을 명시해야함 (나머지는 Hashtable 과 동일)Hashtable 보다 Dictionary 가 연산속도가 빠름 (모든 타입을 받는지 여부에 따른 차이)선언 & 사용 방법마무리Hashtable 과 Dictionary 의 속성 및 메서드에 대한 정보는 참고자료를 확인참고자료1참고자료2참고자료3참고자료4참고자료5참고자료6
[C# 자료구조] Hashtable, DictionaryHashtable 과 Dictionary키 (Key) 와 값 (Value) 를 한쌍으로 저장됨 (공통)키 (Key) 값은 유일해야 함 (공통)키를 통한 값을 찾아서 탐색 속도가 빠름 (공통)Hashtable 은 선언 시, 자료형을 명시하지 않음 (ArrayList 와 동일)Dictionary 는 선언 시, 특정 자료형을 명시해야함 (나머지는 Hashtable 과 동일)Hashtable 보다 Dictionary 가 연산속도가 빠름 (모든 타입을 받는지 여부에 따른 차이)선언 & 사용 방법마무리Hashtable 과 Dictionary 의 속성 및 메서드에 대한 정보는 참고자료를 확인참고자료1참고자료2참고자료3참고자료4참고자료5참고자료6
2021.10.03 -
Stack 과 QueueStack 은 나중에 들어온 데이터가 먼저 나가는 선입선출 (LIFO) 방식 (Enqueue, Dequeue)Queue 는 먼저 들어간 데이터가 먼저 나가는 선입선출 (FIFO) 방식 (Push, Pop)두 자료구조 모두 데이터와 작업을 순서대로 입력하고 차례대로 처리하기에 용이함 선언 & 사용방법마무리되돌리기, 뒤로가기 등의 기능을 구현한다면 스택 (Stack) 이 예시로 적합여러 도전과제를 한꺼번에 달성했을 경우에 차례대로 뜨는 알림 기능을 구현한다면 큐 (Queue) 가 적합스택과 큐의 자세한 설명 자료참고자료1참고자료2참고자료3 (이미지 출처)
[C# 자료구조] Stack, QueueStack 과 QueueStack 은 나중에 들어온 데이터가 먼저 나가는 선입선출 (LIFO) 방식 (Enqueue, Dequeue)Queue 는 먼저 들어간 데이터가 먼저 나가는 선입선출 (FIFO) 방식 (Push, Pop)두 자료구조 모두 데이터와 작업을 순서대로 입력하고 차례대로 처리하기에 용이함 선언 & 사용방법마무리되돌리기, 뒤로가기 등의 기능을 구현한다면 스택 (Stack) 이 예시로 적합여러 도전과제를 한꺼번에 달성했을 경우에 차례대로 뜨는 알림 기능을 구현한다면 큐 (Queue) 가 적합스택과 큐의 자세한 설명 자료참고자료1참고자료2참고자료3 (이미지 출처)
2021.09.26 -
ArrayList 와 ListArrayList 는 길이가 고정되지 않는 추가 & 삭제의 변형이 가능한 가변형 객체 타입 (동적 배열)ArrayList 는 서로 다른 타입의 데이터를 배열에 저장 가능 => (박싱과 언박싱이 발생함)List 도 동일하게 동적 배열List 는 ArrayList 의 단점을 보완하여 같은 타입만 저장이 가능함 => (박싱과 언박싱이 발생하지 않음)특별한 목적이 없다면 ArrayList 를 사용하는 것은 권장하지 않음선언 & 사용 방법마무리처음에 장단점을 몇몇 포함한 내용이 있기 때문에 일부 내용은 생략함ArrayList 와 List 의 속성 및 메서드 그리고 성능에 대한 정보나 이슈는 참고자료를 확인박스와 언박싱이란? (매우 중요한 정보)참고자료1 (정리형)참고자료2 (예제형)참..
[C# 자료구조] ArrayList, ListArrayList 와 ListArrayList 는 길이가 고정되지 않는 추가 & 삭제의 변형이 가능한 가변형 객체 타입 (동적 배열)ArrayList 는 서로 다른 타입의 데이터를 배열에 저장 가능 => (박싱과 언박싱이 발생함)List 도 동일하게 동적 배열List 는 ArrayList 의 단점을 보완하여 같은 타입만 저장이 가능함 => (박싱과 언박싱이 발생하지 않음)특별한 목적이 없다면 ArrayList 를 사용하는 것은 권장하지 않음선언 & 사용 방법마무리처음에 장단점을 몇몇 포함한 내용이 있기 때문에 일부 내용은 생략함ArrayList 와 List 의 속성 및 메서드 그리고 성능에 대한 정보나 이슈는 참고자료를 확인박스와 언박싱이란? (매우 중요한 정보)참고자료1 (정리형)참고자료2 (예제형)참..
2021.09.20 -
Array데이터 형식이 같은 변수를 한번에 모아놓은 데이터의 집합이며, 자료구조 중에서 가장 기본이 되는 데이터 타입기본적으로 배열의 데이터 형식은 값 형식, 배열 변수는 참조 형식선언 방법 * 만약 데이터 타입이 참조 형식일 경우에는 요소들이 null 참조로 초기화됨 사용 방법 응용 방법 장단점인덱스를 통한 검색이 용이함연속된 메모리 공간으로 이루어져 있기 때문에 메모리 관리가 편함크기가 고정되기 때문에 배열 요소가 삭제되면, 빈 공간으로 남겨두어야 함 (메모리 낭비)컴파일 이전에 배열의 크기를 정해야함 (정적 배열)컴파일 이후에 배열의 크기를 변동하기 어려움 (동적 배열은 가능)마무리이외에 가변 배열과 배열의 속성과 메서드 그리고 배열 종류별 성능에 대한 정보는 참고자료로 확인참고자료1참고자료2 ..
[C# 자료구조] ArrayArray데이터 형식이 같은 변수를 한번에 모아놓은 데이터의 집합이며, 자료구조 중에서 가장 기본이 되는 데이터 타입기본적으로 배열의 데이터 형식은 값 형식, 배열 변수는 참조 형식선언 방법 * 만약 데이터 타입이 참조 형식일 경우에는 요소들이 null 참조로 초기화됨 사용 방법 응용 방법 장단점인덱스를 통한 검색이 용이함연속된 메모리 공간으로 이루어져 있기 때문에 메모리 관리가 편함크기가 고정되기 때문에 배열 요소가 삭제되면, 빈 공간으로 남겨두어야 함 (메모리 낭비)컴파일 이전에 배열의 크기를 정해야함 (정적 배열)컴파일 이후에 배열의 크기를 변동하기 어려움 (동적 배열은 가능)마무리이외에 가변 배열과 배열의 속성과 메서드 그리고 배열 종류별 성능에 대한 정보는 참고자료로 확인참고자료1참고자료2 ..
2021.09.12