분류 전체보기 166

[C#] Dictionary vs Hashtable

앞서 Dictionary에 대해서 기본 적인 사용법에 대해서 정리를 하다 보니. 그럼 이 녀석 성능이 얼마나 좋지? 라는 생각이 들었다. 해서... Hashtable 과 비교를 해 보았다. 우선 준비 과정으로 저장 공간에 삽입할 테스트 클래스를 하나 선언. 시간 체크를 위해서 Stopwatch를 사용해 보기로 하자. DateTime 이나 다른걸 사용해도되지만 일단 제일 사용하기 편하니까... 첫 번째로 Dictionary 부터 간단한 예제 코드를 작성했다. 주석으로 봐서 알겠지만, 딕셔너리를 선언하고 데이터를 삽입하고 삭제를 했는데. 삭제를 두번에 나눠서 해보았다. 그냥 ... 좀더 부하를 줘볼까 하고... 두 번째로 Hashtable을 테스트 하는 간단한 예제 코드 인데. 해쉬테이블도 동일한 조건을 위..

C# 2013.11.19

[C#] Dictionary 사용법 3

이 번에 정리할 내용은 Dictionary의 메모리 할당에 대한 궁금함이 생겨서 테스트를 해본 내용을 정리하는 것이다. 궁금함은 만약 할당한 공간을 다시 할당 하면 어떻게 될까 였다. 우선 다음과 같은 테스트 클래스를 하나 만들고 1. Dictionary를 생성하고2. 사용법 1과 2에서 해온 것 처럼 개별 공간을 할당하고 3. 데이터를 삽입하고,4. 출력하는 기본 코드이다. 1. 여기서 다시 개별 공간을 할당해 보았다. 2. 그리고 출력을 해보았다. 결과는.... 다음과 같이 첫번째만 출력 됨을 알 수 있다. 그 이유는 할당 된 공간을 다시 할당하려 하면 단순 초기화만 된다.해서 다시 할당하는 방법이 바람직하지는 않지만 프로그램이 죽는 그런 일은 일어나지 않는다.

C# 2013.11.19

[C#] Dictionary 사용법 2

이번에 정리 할 내용은 앞서 정리한 내용과 더불어 Dictionary 사용법에 대한 내용이다.그 내용중 Dictionary 배열이라는 내용이다. Dictionary는 key와 value의 pair 로 구성되는데 여기에서 혹시라도 key로 사용할 값이 하나더 생기는경우가 있다. 개인적으로 상당히 나쁜 구조라 생각하는데.... 어쩔 수 없는 경우는 언제나 생기기 마련이고,Dictionary가 이런 구조를 지원하니 알아두는 측면에서 정리를 한다. 즉 Dictionary[] 혹은 Dictionary[,] 이런 형태가 가능 하다는 것인데. 이를 사용할 때 좀 이해가 안되어 고생 좀 했던 기억에 정리를 남긴다. 아래의 예제를 보자. 이 예를 보면 혹시 이 글을 보는 분 중 이 코드가 정상 동작을 할꺼라 생각하신다면..

C# 2013.11.18

[C#] Dictionary 사용법 1

이번에 정리할 내용은 c#을 사용하면서 가장 많이 사용한 Dictionary에 관한 내용이다. Dictionary에 관한 내용을 얼마나 정리 할 수 있을 지 모르겠지만, 일단 이번 편은 그 중 가장기본 적인 사용 법에 대해서 우선 정리를 하려고 한다. 우선 Dictionary에서 사용하려고는 임시 클래스를 하나 만든다. 그리고 다음과 같이 Dictionary를 만든다. 물론 여기서는 key 값을 int 로 하고 value를 class로 했지만,key 값을 string 등을 사용해도 상관없으며, value로 클래스가 아닌 변수를 사용해도 된다. Dictionary에 값을 추가 하는 내용으로 add를 사용하여, key와 value가 pair로 들어간다.들어간 값을 출력 혹은 가져오는 방법으로 기본적으로 두 ..

C# 2013.11.18

[C#] 배열 복사.

이번에 포스팅 할 내용은 배열의 복사에 대한 내용이다. 일단 다음과 같은 간단한 클래스가 있다고 가정 하자. 그리고 다음 과 같이 예제를 작성해 보자. 결과는 어떻게 될까? 실행전에 기대한 결과는. 세번째 출력에서 임의로 생성한 배열과 테스트 클래스의 배열의 값이 다를 것을 기대 했다. 배열의 값은 1,2,3 이고 테스트 클래스의 값은 4,5,6을 기대 했는데. 결과는... 예상을 빗나가 임의로 만든 배열의 값도 변경 되었다... 그 말인 즉, test_1.tclass_array = test; 이 구문이 실제 값을 할당하는 것이 아니라 주소를 참조하는 것이라는... 이런.. 그럼 어떻게 해야 될까? 위의 대입 부분을 이렇게 변경 해주면 된다.

C# 2013.10.22

[C#] 메모리 할당.

제목이 맞는지 모르겠지만, 일단 new 에 대한 내용이니... 이번에 작성할 내용은 클래스 내부의 배열이나 다른 클래스에 대한 이야기 이다. 일단. 이런 두 개의 클래스가 있는데. testArray는 testClass 에 내부에 배열로 선언 되어 있다.여기에 값을 넣어 보자. 일단 testClass를 생성하고 for을 돌면서 값을 채우는데... a 에 값이 설정하고 b는 for문을 돌면서.. 이 구문이 될까요?... 결론은 안됩니다. testArray가 생성되어 있지 않지 않으니까요.. 이런 내용이 출력 되지요.. 그럼 testArray를 생성해 보죠.. 이번에는 testArray를 생성 했습니다. 될까요?... 저 역시!!! 처음에 될줄 알았습니다... ㅎㅎㅎ 이 말은 안된다는 거죠...일단 testA..

C# 2013.10.21

[C#] const 와 readonly

이번에 작성할 내용은 const와 readonly 입니다. 이 중 cosnt는 C 또는 C++ 에서도 많이 사용해서 익숙하지만, readonly는 C#을 하면서 처음 보는 거라 '이게 뭐지?....' 라는 생각이 처음 들었었죠.. 역시나 내용은 간단 합니다. const는 선언할 때 초기값을 설정해 주어야 합니다.readonly는 선언할 때 초기값을 설정해 주어도 되고 클래스 멤버라면 클래스 생성시에 해주면 됩니다. 공통적인 내용은 둘다 값이 세팅 되면 변경이 불가능 하다는 거죠. 해서 저는 주로 readonly를 DB에서 읽어온 흠... Base Data를 저장? 세팅? 할 때 주로 사용합니다. 간단한 예제를 보면 다음과 같습니다. 결과는 예상 하시듯이. 간단하지만... 그래도 설명을 하면 테스트 클래스..

C# 2013.10.21

[C#] 배열 초기화.

※ 이 공간을 방문 하시는 분들 중에 제가 혹시라도 잘 못 기제한 내용이 있다면 언제든지 알려주세요. 익숙하지 않은 언어를 사용해서 프로젝트를 진행하면서 문득문득 떠오른 테스트 코드를 공유하고 있습니다. 혹시 처음 C#을 접하는 분들에게라면 조금 도움이 될지도 모르겠네요. 일단 가장 우선적인 목적은 저 스스로의 기억을위해서 입니다. C 또는 C++ 에서 배열을 초기화 할 때. int _tmain(int argc, _TCHAR* argv[]){ // 비어 있어도 된다.int array[10] = { 1,2, }; for (int i = 0; i < 10; i++ ){printf("배열 출력 %d\n", array[i]);} return 0;} 이런 식으로 초기화를 했던 기억에 C#에서도 될 줄 알았는데....

C# 2013.10.21