해시테이블은 Key와 Value로 이루어져 있다. 배열과 달리 숫자 인덱스가 아닌 Key 값을 호출해야 Value값을 볼 수 있다. using System; using System.Collections; 해시테이블은 System.Collections 라이브러리에 들어있기에 반드시 이를 호출해줘야 한다. 해시테이블 예제를 만들어보자. Hasht...
C# - 해시테이블(HashTable)과 딕셔너리(Dictionary)
C# - Generic(제네릭)
제네릭은 일반화라고 부르며 우리가 말하는 모든 데이터 형식 또는 함수의 타입에 대해 우리가 원하는 타입으로 고정시킬 수 있다. class A<T> { T[] array = new T[10]; } class B<T> { public T Addition(T result) { return resul...
C# - 배열(Array) - (2)
배열은 지정된 수만큼 메모리를 할당한다. 따라서 유동적이지 못하고, 부러 큰 배열을 사용했는데도 데이터가 작으면 할당되지 않은 메모리를 그만큼 낭비하게 된다. 우리는 그것을 해결하기 위해 동적 배열을 사용하는데, 그것을 두고 리스트(List)라고 부른다. 리스트의 선언은 다음과 같다. List<데이터타입> list; 그리고 이를 사용...
C# - 배열(Array) - (2)
다차원 배열을 이용하면 다양한 상황에서 이용할 수 있다. 예를 들어 미로를 만들 수도 있고, 게임에서 미니맵을 만들 수도 있다. 사용법은 배열과 유사하다. 단지 쉼표만 붙을 뿐이다. 데이터형식[ , ] 배열이름 = new 데이터형식[크기]; int[,] a = new int[5, 5] { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9,...
C# - for문과 foreach문
C#의 for문은 다른 프로그래밍 언어와 크게 다르지 않은 매커니즘으로 돌아가지만, 중요한 요소가 몇 가지 있다. for문은 다음과 같이 선언한다. for (초기값, 반복 횟수, 증감 연산자) { 실행할 명령문} 보기만 해서는 뭔가 어려워보인다. 하지만 다음 코드를 보면 정말 쉬운 매커니즘이라는 걸 알 수 있다. int[] a = new int...
C# - 배열(Array) - (1)
배열(array)은 다음과 같이 선언한다. 데이터형식[] 배열이름 = new 데이터형식[크기]; int[] a = new int[5]; 배열 a 는 int형 데이터를 5개 담을 수 있다. int[] a = new int[5] { 1, 2, 3, 4, 5 }; 이렇게 하면 배열 a에는 1,2,3,4,5가 들어있다는 이야기가 된다. 우리는 이것...
C# - static 한정자
static 한정자로 변수/함수/클래스를 지정하면 프로그램 내를 통틀어 단 한 개만 존재함을 의미한다. public static void StaticA() { Console.WriteLine(staticString); } 만약 클래스가 static이라면 그 이하 변수와 함수 또한 static을 부여받아야 한다. static class A...
C# - 추상(abstract) 클래스와 인터페이스(interface)
public abstract class A { public abstract string CW(); } public class B : A { public override string CW() { string str = "상속받았어요."; ...
C# - 다형성(polymorphism)
sealed 메소드는 오버라이딩이 되지 않도록 봉인하는 역할을 한다. sealed class는 다른 클래스를 상속받을 수 없다. class A { public string name3 = "B로 상속이 불가능. B는 sealed 클래스이기 때문"; } sealed class B { public string name = "안녕"; ...
C# - 접근 한정자
접근 제한자 설명 public 클래스의 내부/외부 모두에서 접근 가능. protected 외부에서 접근 불가, 파생 클래스에서는 접근 가능. private 클래스의 내부에서만 접근 가능....