강제 형 변환보다는 as, is가 좋다! C#에서도 C, C++, Java등에서 사용하던 강제 형 변환을 할 수 있다. 형 변환 예) void EventHandler(object obj, EventArgs e) { MyClass myClassByCast = (MyClass)obj; // cast사용 MyClass myClassByAs = obj as MyClass; // as 사용 } C#에서는 위처럼 object형을 형 변환해야 할 때가 종종 있다. 중요한 점은 위처럼 강제 cast를 하나 as키워드를 사용하나 그 결과는 같다는 것이다. 그렇다면 왜 as키워드를 사용해야 하는 걸까? 1. as나 is 연산자는 런타임에 객체의 형 변환이 가능한지를 확인하기 위해서 사용자가 정의한 형 변환 연산자를 고려하..
시스템함수 Beep(int frequency, int duration)을 이용하면 된다 Kernel32.dll을 임포트해서 사용할 수 있다. 예제소스 : /// /// 비프음을 내는 시스템 함수 /// /// 주파수 /// 비프음 길이(시간, 단위 : 1000 = 1초) [DllImport("KERNEL32.DLL")] extern public static void Beep(int freq, int dur); public static void Main() { // 출처 : 네이버 // 도 = 256Hz // 레 = 도 * 9/8 = 288Hz // 미 = 레 * 10/9 = 320Hz // 파 = 미 * 16/15 = 341.3Hz // 솔 = 파 * 9/8 = 384Hz // 라 = 솔 * 10/9 =..
[DllImport("user32.dll")] public static extern short GetKeyState(int keyCode); [DllImport("User32.dll")] public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo); if ((Win32API.GetKeyState((int)Keys.CapsLock) & 0xffff) != 0) { Win32API.keybd_event((byte)Keys.CapsLock, (byte)0, 0, 0); Win32API.keybd_event((byte)Keys.CapsLock, (byte)0, 2, 0); } 설명 : Win32 API 함수 중에..
C#에서 다중배열은 크게 일반적인다중배열, 톱니배열로 나눌수 있습니다. 일반적인 다중배열은 각 차원을 한번에 설정해주어야 하고 각 차원마다의 크기가 같게됩니다. 톱니배열은 각차원의 크기를 다르게 설정해줄 수 있고, 차원의 크기를 실행중에 할당할 수 있습니다. 간단히 예제를 보시면 이해되실 수 있을거라 생각됩니다. int lv1 = 2; int lv2 = 3; int lv3 = 4; // 일반적인 다중배열 사용방법 double[,,] PanBuf; PanBuf = new double[lv1,lv2,lv3]; PanBuf[0, 0, 0] = 5.0; // 톱니배열사용(각 차원의 크기를 다르게 지정할 수 있음) // 톱니배열 사용 예 #1 - 각 차원마다 같은 크기 지정 // 1차원 - lv1, 2차원 lv2..
[질문 – C++에서의 CList를 C#에서 어떻게 구현하는가] 이번에 C#을 다루게 되었는데, MFC로 구현된 것을 C#으로 바꾸고 있습니다. 중간에 지금 막혀서 그런데 많은 답변 부탁드립니다;;; ㅠㅠ;; MFC의 CList 를 C#에서 List 으로 하는 표현방식이 맞는지 모르겟네요 오류는 나지않지만..... 그리고 MFC의 CList 클래스 GetHeadPosition(), GetNext() 를 C#으로 매칭시키는 함수가 궁금합니다;;; 아니면,,,, 구현하는 방법이라도 답변부탁드립니다;;;; ㅎㅎ [답변] List를 접근하는 방법은 열거자를 이용하는방법, 인덱스로 접근하는 방법, foreach문을 통해 접근하는 방법등이 있다. 간단한 예제를 작성해 보았다. 다음 3가지의 경우는 모두 같은 출력물..