250924
·
📖TIL
자료구조수많은 데이터를 효율적으로 관리하는 기법 List순서가 중요하거나 크기가 가변적인 데이터 관리에 유리배열을 쓸법한 상황은 보통 다 List 도 어울린다인덱스로 한번에 특정 요소를 가져올 때 좋다중간에 삽입/삭제가 일어나면 연속성을 유지하기 위해 연산 부하가 생김static void Main(string[] args){ List inven = new List(); inven.Add("철삽"); inven.Add("다이아곡괭이"); inven.Add("구리"); // ↓Capacity 가 아닌 Count 를 사용한다 for (int i = 0; i Linked List 노드라는 단위로 이루어진 자료구조1. 데이터 ( Data )2. 다..
List<T>
·
⭐C Sharp/15-3. 리스트
리스트 ( List )List 는 C# 에서 가장 널리 사용되는 제네릭 중 하나이다.C# 에서 배열의 불편함을 개선해서 만든 자료구조이다.내부적으로는 자료구조 중에서 동적 배열을 기반으로 하며,크기를 자동으로 늘리면서 순차적으로 데이터를 저장할 수 있다. 단, 내부에서는 실제 배열로 동작이 되고, 크기를 넘어선 추가가 일어날 때새로운 메모리 공간에 더 큰 배열을 할당하게 된다. List 선언 방법리스트는 System.Collections.Generic 네임스페이스 안에 있는 List 제네릭 클래스를 사용한다.( T 는 타입 자리 - int, string , MyCalss 같은 형식을 넣으면 된다 )using System.Collections.Generic// System.Collections.Gene..
인덱서
·
📖TIL
class Enemy { public string Name { get; set; } } class Ally { public string Name { get; set; } } //기존 배열이 몇개의 사이즈였던, 새로운 객체를 주기만 하면 현재의 배열 맨 뒤에 알아서 추가하는 기능 class Troop { T[] army; int count; //실제 null이 아닌 T 의 보유 갯수 기억용 public int Capacity // 배열의 길이를 반환시켜주는 프로퍼티 { get { return army.Length; } } public int Co..
인덱서
·
📖TIL
struct Item{ public string Name { get; set; } public string Description { get; set; }}class Inventory{ /* 인덱서 [접근지정자] [반환형태] this [int i] { get{return 반환할 것} set{세팅할 값} } */ Item[] items; //인벤토리는 아이템'들'을 들고 있다 public Item this[int i] { get { return items[i]; } set { items[i] = value; } } //▼ 인벤토리를 통으로 건네주는 프로퍼티 버전 publi..
델리게이트
·
📖TIL
◎델리게이트델리게이트는 메서드/함수를 가리키는 리모컨 같은 것이다. 리모컨 버튼을 누르면 TV 가 켜지듯, 델리게이트를 실행하면 연결된 메서드가 실행된다. 즉, 메서드를 변수처럼 저장하고 실행할 수 있는 도구이다. 전화번호부에 "부모님" , "친구" , "치킨집" 번호를 저장해놓으면 필요할 때 그 번호를 불러서 전화를 걸수 있다. 델리게이트도 똑같이 메서드의 "주소"를 저장해놓고, 필요할 때 꺼내서 호출한다. ◎델리게이트 체인 하나의 델리게이트 변수에 여러 개의 메서드를 차례대로 연결하는 것. 실행하면 연결된 메서드들이 순서대로 전부 실행된다. 그래서 체인(사슬) 이라고 부른다. 도미노를 일렬로 세워놓고 하나를 쓰러뜨리면 순서대로 다 쓰러지게된다. 델리게이트 체인도 마찬가지로, 한 번 호출하면 연결된 ..
델리게이트
·
📖TIL
namespace Week_3{ // 델리게이트 기입, 이후 3가지 정보 필요 // 반환 , 델리게이트명, 매개변수(인자) 형태 delegate void MyDel(); // 이제 MyDel 로 만든 객체는 함수 중에서, 반환은 없고, 매개변수는 없는 함수를 기억할 수 있음 delegate int myDel2(); // MyDel2 만든 객체는 반환은 int 형이고, 매개변수는 없는 함수를 기억할 수 있음 class TempClass { public void PrintTemp() { Console.WriteLine("매개변수도 없고, 반환도 없는 메서드"); } } internal class ..
인터페이스
·
📖TIL
인터페이스는 개발자들간의 약속을 정의할때 사용구현을 강제할 때다형성을 활용 가능해짐interface GooglePlay{ void SetID();}class Galaxy: GooglePlay { public void SetID() { }}class Pixel: GooglePlay { public void SetID() { }}class IPhone { }class Xperia { }class Motorala { }Class Program{ static void Main(string[] args) { GooglePlay AndroidPhone = new Galaxy(); }} 인터페이스와 추상클래스 공통점과 차이점 공통점직접 객체 ( 인스턴스 ) ..
클래스 ( Class )
·
⭐C Sharp/11. 객체 지향
클래스를 가장 쉽게 이해하는 방법은 설계도 ( 청사진 ) 로 비유하는 것이다.C# 과 같은 객체지향 언어에서는 클래스가 프로그램의 기본 단위이자 중심이라고 할수 있다. 객체 ( Object ) 와 클래스의 관계클래스 ( Class ) 는 객체 ( Object ) 를 만들기 위한 설계도이다.데이터 ( 필드 , 프로퍼티 ) + 기능 ( 메서드 ) 를 묶어놓은 사용자 정의 자료형이다.- 클래스 ( class ) : 객체를 만들기 위한 틀 ( 설계도 )- 객체 ( Object ) : 클래스에 따라 만들어진 실제 실체 ( 인스턴스 )- 인스턴스 ( Instance ) : 특정 클래스에서 생성된 객체 ( 출처를 강조 ) 클래스의 구성 요소1. 필드 ( Field ) : 클래스 내부에 선언된 변수와 같은 데이터..
메모리 구조
·
⭐C Sharp/11. 객체 지향
메모리 구조메모리가 저장되고 삭제되는 과정을 메모리의 할당과 해제라고 표현한다. 메모리 할당사용을 위해 필요한 크기만큼의 비어있는 메모리를 측정하여 사용한다.C# 에서는 크게 두 가지- 스택 ( Stack ) 에 할당- 힙 ( Heap ) 에 할당 메모리 해제 할당된 메모리를 다시 사용할 수 있도록 메모리에 있는 내용을 비워두는 작업C / C++ 같은 언어는 free() 키워드 같은 걸로 직접 해제해야 하지만,C# 은 GC ( Garbage Collector ) 가 자동으로 해제해준다.- GC 는 " 더이상 참조되지 않는 객체 " 를 찾아서 메모리를 회수- 따라서 일반적으로 프로그래머가 직접 해제하지 않아도 된다. 메모리 누수 사용된 메모리가 해제되지 않고 남아있다면, 매우 불필요하게 공간을 차지..