분류 전체보기
-
이름 없는 델리게이트(Anonymous Delegate)C# 예제 공부일기 2020. 7. 22. 19:33
앞에서 IsOdd() 와 IsEven() 메소드는 MemberTest의 델리게이트 메소드로 사용되었다. 그런데 이 메소드들은 한번씩만 사용되었기 때문에 굳이 이름을 갖는 메소드로 정의하지 않고 이름 없이 인라인 함수로 만들 수 있다. 이것을 무명 또는 익명 델리게이트라고 한다. class Program { delegate bool MemberTest(int a); static void Main(string[] args) { int[] arr = new int[] { 3, 5, 4, 2, 6, 4, 6, 8, 54, 23, 4, 6, 4 }; Console.WriteLine("짝수의 개수 : " + Count(arr,delegate(int x) { return x % 2 == 0; })); //이름 없이 ..
-
Delegate의 기본, 배열에서 홀수와 짝수 찾기 + Delegate 예제C# 예제 공부일기 2020. 7. 22. 19:23
정수에서 홀수와 짝수의 개수를 출력하는 프로그램이 있다. int[] arr = new int[] {3,5,4,2,6,4,6,8,54,23,4,6,4} Console.WriteLine("짝수의 개수 : " + EvenCount(arr)); Console.WirteLine("홀수의 개수 : " + OddCount(arr)); 짝수의 개수를 리턴하는 EvenCount() 홀수의 개수를 리턴하는 OddCount static int EvenCount(int[] a) { int cnt =0; foreach(var n in a) { if(n%2==0) cnt++; } return cnt; } static int EvenCount(int[] a) { int cnt =0; foreach(var n in a) { if(n..
-
인덱서C# 예제 공부일기 2020. 7. 22. 18:55
인덱서는 인스턴스 내의 데이터에 접근하는 방법입니다. 용도는 속성(Property)과 똑같은데 다른 점은 배열과 같이 인덱스를 사용할 수 있다는 점이다. 인덱서는 this[]를 사용하며 겟터와 셋터를 만든다. 겟터와 셋터에서 클래스의 어떤 값을 가져오고, 어떤 값을 세팅하는지 정해주면 된다. class MyCollection //제네릭 클래스인 MyCollection 정의 { //T형 자료를 100개 저장할수 있는 배열 생성 private T[] array = new T[100]; //인덱서 생성 public T this[int i] { //this 키워드를 사용해서 정수 인덱스 사용 가능하게 한다. get { return array[i]; } set { array[i] = value; } } } cla..
-
SortedList와 Sorted<TKey, TValue>C# 예제 공부일기 2020. 7. 21. 20:48
Sorted 컬렉션은 키의 오름차순으로 키-값 쌍을 저장한다. 내부적으로 SortedList는 키와 값을 저장하는 두 개의 object[] 배열을 유지한다. 새로운 값이 들어오면 키를 이진탐색하여 적절한 인덱스를 찾고 그 곳에 키 - 값 쌍을 저장한다. 앞전 예제인 Dictionary를 정렬한 느낌인듯 하다. C#은 다른 컬렉션과 마찬가지로 제네릭과 제네릭이 아닌 것 두개를 제공한다. SortedList는 다음과 같이 사용한다. Key는 int , Value는 string이다. SortedList mySortedList = new SortedList(); class Program { static void Main(string[] args) { SortedList s1 = new SortedList(); ..
-
Hashtable과 Dictionary<TKey, TValue>C# 예제 공부일기 2020. 7. 21. 20:21
Hashtable이나 Dictionary 객체는 사전과 같이 "키" 와 "값" 쌍으로 데이터를 저장한다. 0,1,2 같은 인덱스가 아니고 키에 의해 값을 찾아준다. Hashtable이나 Dictionary에서는 모든 값이 키가 될 수 있다. 하지만 Hashtable은 non-generic 컬렉션이고 Dictionary는 제네릭 컬렉션이다. 사용법은 거의 동일하다. Hashtable과 Dictionary는 키를 인덱스로 값을 찾아주기 때문에 탐색속도가 O(1) 이다. 이 작업을 해싱이라고 한다. Hashtable이라는 이름은 Hashing에서 유래했다. 사용시 주의할 점 - 키는 중복될 수 없다. 중복된 키로 저장하면 ArgumentException이 발생한다. - 없는키로 Hashtable에 접근하면 K..
-
Stack<T> 와 Polish 계산기C# 예제 공부일기 2020. 7. 21. 20:08
큐와 반대로 스택은 나중에 저장된 자료가 먼저 처리될 때 사용하는 자료구조이다. 나중에 들어온 자료가 먼저 처리되므로 후입선출(LIFO, "Last-In First-Out") 이라고도 한다. 스택은 입력과 출력이 한 방향에서만 이루어진다. 스택에 자료를 넣는 것을 Push, 꺼내는 것을 Pop이라고 한다. 큐와 마찬가지로 .NET 컬렉션은 Stack과 Stack를 제공한다. 제네릭과 제네릭 아닌 것의 차이니 제네릭 쓰는 게 더 나을 것 같다. Polish표기법을 사용하는 4칙 연산 계산기 Polish 표기법은 피연산자 뒤에 연산자를 쓰게 된다. 1+2 => 1 2 + 로 표기한다. 이렇게 되면 수식에 괄호가 없어도 우선순위를 처리할 수 있게 된다. 예를들어 (10-20)*3 => 10 20 - 3 * 가..
-
Queue<T> 컬렉션의 사용 방법C# 예제 공부일기 2020. 7. 21. 19:32
극장이나 음식점에서 순서를 기다리면서 줄을 서면 먼저 온 사람이 먼저 들어간다. 이와 같이 큐는 자료가 저장된 순서대로 선착순 처리할 때 유용한 자료구조이다. 먼저 들어간 자료가 먼저 처리되므로 선입선출(FIFO, First-In-First-Out)이라고도 한다. **배열이나 리스트가 인덱스로 특정 위치의 자료에 자유롭게 접근하는 반면에, Queue는 입력은 오직 뒤에서, 출력은 앞에서만 이루어진다. Queue에 자료를 넣는 것을 Enqueue, 꺼내는 것을 Dequeue라고 한다. .NET 컬렉션은 제네릭 Queue와 재네릭이 아닌 Queue를 제공한다. 둘중 Queue의 사용을 권장한다고 한다. static void Main(string[] args) { Queue que = new Queue(); ..
-
IComparable 인터페이스를 이용한 객체의 정렬C# 예제 공부일기 2020. 7. 21. 19:06
C#의 컬렉션은 대부분 Sort메소드를 제공하는데 IComparable 인터페이스를 구현해야 정상적으로 동작한다. IComparable 인터페이스는 자신과 비교할 매개변수를 비교하여 결과를 반환하는 CompareTo메소드를 만들도록 약속하고 있다. 매개변수 형식이 object 형식으로 되어 있으므로 프로그램의 목적에 맞게 캐스팅하여 처리해야 한다. interface IComparable { int ComapreTo(object obc); } C#의 System에 정의되어 있는 int, double, string 등의 기본 형식들은 IComparable 인터페이스를 기반으로 정의되어 있어서 이들 기본 형식을 보관한 컬렉션은 Sort메소드를 이용하여 정렬할 수 있다. 우리가 사용하는 클래스에 ICompara..