본문 바로가기

C#

[C#] 한글 프로그래밍 비주얼 스튜디오 2010에서 한글이 얼마나 사용될 수 있을까? 라는 생각에재미로 만들어본 예제이다. 결과..1. 한글 네임스페이스 가능.2. 한글 함수명 가능.3. 한글 변수 가능.4. 한글 클래스명 가능. 재미있네요. 더보기
[C#] GUID 생성. C# 에서 간편하게 guid 를 생성할 수 있는 방법이 있다. guid는 유니크 id 이니까. 키 값으로 활용을 많이 했었는데... 생성하는 방법은 다음과 같다. 이상 끝~ 더보기
[C#] Dictionary vs Hashtable 앞서 Dictionary에 대해서 기본 적인 사용법에 대해서 정리를 하다 보니. 그럼 이 녀석 성능이 얼마나 좋지? 라는 생각이 들었다. 해서... Hashtable 과 비교를 해 보았다. 우선 준비 과정으로 저장 공간에 삽입할 테스트 클래스를 하나 선언. 시간 체크를 위해서 Stopwatch를 사용해 보기로 하자. DateTime 이나 다른걸 사용해도되지만 일단 제일 사용하기 편하니까... 첫 번째로 Dictionary 부터 간단한 예제 코드를 작성했다. 주석으로 봐서 알겠지만, 딕셔너리를 선언하고 데이터를 삽입하고 삭제를 했는데. 삭제를 두번에 나눠서 해보았다. 그냥 ... 좀더 부하를 줘볼까 하고... 두 번째로 Hashtable을 테스트 하는 간단한 예제 코드 인데. 해쉬테이블도 동일한 조건을 위.. 더보기
[C#] Dictionary 사용법 3 이 번에 정리할 내용은 Dictionary의 메모리 할당에 대한 궁금함이 생겨서 테스트를 해본 내용을 정리하는 것이다. 궁금함은 만약 할당한 공간을 다시 할당 하면 어떻게 될까 였다. 우선 다음과 같은 테스트 클래스를 하나 만들고 1. Dictionary를 생성하고2. 사용법 1과 2에서 해온 것 처럼 개별 공간을 할당하고 3. 데이터를 삽입하고,4. 출력하는 기본 코드이다. 1. 여기서 다시 개별 공간을 할당해 보았다. 2. 그리고 출력을 해보았다. 결과는.... 다음과 같이 첫번째만 출력 됨을 알 수 있다. 그 이유는 할당 된 공간을 다시 할당하려 하면 단순 초기화만 된다.해서 다시 할당하는 방법이 바람직하지는 않지만 프로그램이 죽는 그런 일은 일어나지 않는다. 더보기
[C#] Dictionary 사용법 2 이번에 정리 할 내용은 앞서 정리한 내용과 더불어 Dictionary 사용법에 대한 내용이다.그 내용중 Dictionary 배열이라는 내용이다. Dictionary는 key와 value의 pair 로 구성되는데 여기에서 혹시라도 key로 사용할 값이 하나더 생기는경우가 있다. 개인적으로 상당히 나쁜 구조라 생각하는데.... 어쩔 수 없는 경우는 언제나 생기기 마련이고,Dictionary가 이런 구조를 지원하니 알아두는 측면에서 정리를 한다. 즉 Dictionary[] 혹은 Dictionary[,] 이런 형태가 가능 하다는 것인데. 이를 사용할 때 좀 이해가 안되어 고생 좀 했던 기억에 정리를 남긴다. 아래의 예제를 보자. 이 예를 보면 혹시 이 글을 보는 분 중 이 코드가 정상 동작을 할꺼라 생각하신다면.. 더보기
[C#] Dictionary 사용법 1 이번에 정리할 내용은 c#을 사용하면서 가장 많이 사용한 Dictionary에 관한 내용이다. Dictionary에 관한 내용을 얼마나 정리 할 수 있을 지 모르겠지만, 일단 이번 편은 그 중 가장기본 적인 사용 법에 대해서 우선 정리를 하려고 한다. 우선 Dictionary에서 사용하려고는 임시 클래스를 하나 만든다. 그리고 다음과 같이 Dictionary를 만든다. 물론 여기서는 key 값을 int 로 하고 value를 class로 했지만,key 값을 string 등을 사용해도 상관없으며, value로 클래스가 아닌 변수를 사용해도 된다. Dictionary에 값을 추가 하는 내용으로 add를 사용하여, key와 value가 pair로 들어간다.들어간 값을 출력 혹은 가져오는 방법으로 기본적으로 두 .. 더보기
[C#] 배열 복사. 이번에 포스팅 할 내용은 배열의 복사에 대한 내용이다. 일단 다음과 같은 간단한 클래스가 있다고 가정 하자. 그리고 다음 과 같이 예제를 작성해 보자. 결과는 어떻게 될까? 실행전에 기대한 결과는. 세번째 출력에서 임의로 생성한 배열과 테스트 클래스의 배열의 값이 다를 것을 기대 했다. 배열의 값은 1,2,3 이고 테스트 클래스의 값은 4,5,6을 기대 했는데. 결과는... 예상을 빗나가 임의로 만든 배열의 값도 변경 되었다... 그 말인 즉, test_1.tclass_array = test; 이 구문이 실제 값을 할당하는 것이 아니라 주소를 참조하는 것이라는... 이런.. 그럼 어떻게 해야 될까? 위의 대입 부분을 이렇게 변경 해주면 된다. 더보기
[C#] 메모리 할당. 제목이 맞는지 모르겠지만, 일단 new 에 대한 내용이니... 이번에 작성할 내용은 클래스 내부의 배열이나 다른 클래스에 대한 이야기 이다. 일단. 이런 두 개의 클래스가 있는데. testArray는 testClass 에 내부에 배열로 선언 되어 있다.여기에 값을 넣어 보자. 일단 testClass를 생성하고 for을 돌면서 값을 채우는데... a 에 값이 설정하고 b는 for문을 돌면서.. 이 구문이 될까요?... 결론은 안됩니다. testArray가 생성되어 있지 않지 않으니까요.. 이런 내용이 출력 되지요.. 그럼 testArray를 생성해 보죠.. 이번에는 testArray를 생성 했습니다. 될까요?... 저 역시!!! 처음에 될줄 알았습니다... ㅎㅎㅎ 이 말은 안된다는 거죠...일단 testA.. 더보기
[C#] const 와 readonly 이번에 작성할 내용은 const와 readonly 입니다. 이 중 cosnt는 C 또는 C++ 에서도 많이 사용해서 익숙하지만, readonly는 C#을 하면서 처음 보는 거라 '이게 뭐지?....' 라는 생각이 처음 들었었죠.. 역시나 내용은 간단 합니다. const는 선언할 때 초기값을 설정해 주어야 합니다.readonly는 선언할 때 초기값을 설정해 주어도 되고 클래스 멤버라면 클래스 생성시에 해주면 됩니다. 공통적인 내용은 둘다 값이 세팅 되면 변경이 불가능 하다는 거죠. 해서 저는 주로 readonly를 DB에서 읽어온 흠... Base Data를 저장? 세팅? 할 때 주로 사용합니다. 간단한 예제를 보면 다음과 같습니다. 결과는 예상 하시듯이. 간단하지만... 그래도 설명을 하면 테스트 클래스.. 더보기
[C#] 배열 정렬 앞서 배열의 초기화에 대해서 적었는데. 이번에는 배열의 값을 정렬하는 간단한 함수가 있어서 잊어 먹기 전에 적어놓으려 합니다. 내용은 간단 합니다. 이렇게 하면 이런 결과를 얻을 수 있습니다. 더보기
[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#] 문자열 1 (string) 닷넷 프레임 워크에서 string은 유니코드 기반 문자로 2바이트이다. 한 번 생성된 string 객체는 readonly 이고 기본적으로 사용 법은다음과 같다. string test = "문자문자"; 이고 여기에 문자를 더 할 수 있는데 방법은 다음과 같다. test += "다"; 해서 test에 들어 있는 값은 "문자문자다" 가 된다. 멤버 유형 설명 Length 프로퍼티 현재 문자열의 문자 수를 가져온다. Format 메소드 문자열은 지정된 서식 표현으로 변환한다. Replace 메소드 문자열 내용을 지정된 문자열로 변경한다. Split 메소드 문자열의 특정 구분자를 기준으로 문져열 배열을 반환한다. Substring 메소드 문자열 일부를 자른다. ToLower 메소드 문자열 전체를 소문자로 변환한다.. 더보기
[C#] 배열 정렬 (Sort, Reverse) c# 에서는 간단한 정렬을 Array 클래스의 Sort 클래스를 통해서 자체적으로 지원해 준다. 오름 차순 혹은 내림 차순 정렬을 다음의 예시를 통해서 확인 할 수 있다. 위의 예제는 배열에 값을 삽입하고, 1. 뒤집고,2. 정렬하고3. 다시 뒤집고하는 예제이다. 이 예제를 실행해 보면 다음과 같은 결과를 얻을 수 있다. 이상 끝~ 더보기
[C#] 상수선언 (const, readonly) const와 readonly는 대동소이 한데... 일단 - 초기화 이후 값을 변경 할 수 없다. - 선언할 때만 초기화 할 수 있다. - 컴파일 타임 상수라 칭해진다. - 초기화 이후 값을 변경 할 수 없다. - 선언할 때 또는 생성자에서 초기화 될 수 있다. 따라서 사용된 생성자에 따라 필드의 값이 결정된다. - 런타임 상수라 칭해진다. 예시 더보기
[C#] 변수 선언 C#에서 변수 선언에는 몇 가지 규칙이 있다. 이는 c와 c++와 크게 다르지 않다. 1. _(언더바)로 시작 가능.2. 숫자로 시작할 수 없다.3. 예약어는 사용할 수 없다. 등등이 있는데. 사실 크게 염두해 두고 사용할 정도는 아니다. Pascal, Camel(혹 낙타법), 헝그리안표기법이나, 구글 코딩 가이드에 나오는 법등.. 아니면 개인의 방법을 사용하든 문제될 건 없다. object var dynamic 설정 가능 형식 모든 형식 null등 일부를 제외한 대부분 모든 형식 설정 값의 원본 유지 값을 설정하면 object형식 그 자체 원본 형식 추정 개발 시점에는 원본 형식을 알 수 없음. 형식 확정 컴파일 컴파일 런타임 바인딩 방식 정적 정적 동적 더보기
[C#] DataType2 값 형식2 struct와 class 타입의 값의 변화를 보여주는 예를 작성해 본다. 위의 예에서 보듯이... 구조체는 독립된 공간을 가진다. 해서 복사된 곳의 값을 변경한다고 해도 원본의 값이변경되지 않는다. 아마 구조체의 경우는 선언시에 생성이 되고 대입시에 값이 복사만 되는 것으로 생각되고, TestClass test_class2 = test_class1 에서 여기선 생성이 아닌 포인트 참조만 된다는 것인거 같다.해서 test_class2의 값을 바꾸면 원본의 값도 바뀌는 것이겠다. 더보기
[C#] DataType 값 형식 C# 에서 사용하는 DataType에 대해서 정리. 1. 값 형식(Value Type) - 숫자형 : sbyte, short, int, long, byte, ushort, uint, ulong, float, double, decimal - bool - char - struct - enum ..등 2. 참조 형식 ( Reference Type) - string - object - class ... 등 3. 지원 형식 4. 사용 예시. 더보기