본문 바로가기 메뉴 바로가기

손끝으로 만드는 세상

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

손끝으로 만드는 세상

검색하기 폼
  • 분류 전체보기 (30)
    • 개발 일반 (0)
    • Android (1)
    • WPF (4)
    • C# (18)
    • Linux (Ubuntu) (5)
    • Python (2)
  • 방명록

분류 전체보기 (30)
강제 형 변환(cast)보다는 as, is 연산자를 사용하는 것이 좋다

강제 형 변환보다는 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 연산자는 런타임에 객체의 형 변환이 가능한지를 확인하기 위해서 사용자가 정의한 형 변환 연산자를 고려하..

C# 2009. 3. 30. 00:49
[C#] 컴퓨터의 Beep음을 내는 방법

시스템함수 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 =..

C# 2008. 12. 31. 12:17
[C#] CapsLock 상태 확인하는 방법

[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# 2008. 12. 29. 10:41
[C#] 다중배열 사용하기 - 일반다중배열, 톱니배열

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# 2008. 12. 26. 05:07
[C#] C++에서의 CList<object, object&>를 C#에서 구현하기

[질문 – C++에서의 CList를 C#에서 어떻게 구현하는가] 이번에 C#을 다루게 되었는데, MFC로 구현된 것을 C#으로 바꾸고 있습니다. 중간에 지금 막혀서 그런데 많은 답변 부탁드립니다;;; ㅠㅠ;; MFC의 CList 를 C#에서 List 으로 하는 표현방식이 맞는지 모르겟네요 오류는 나지않지만..... 그리고 MFC의 CList 클래스 GetHeadPosition(), GetNext() 를 C#으로 매칭시키는 함수가 궁금합니다;;; 아니면,,,, 구현하는 방법이라도 답변부탁드립니다;;;; ㅎㅎ [답변] List를 접근하는 방법은 열거자를 이용하는방법, 인덱스로 접근하는 방법, foreach문을 통해 접근하는 방법등이 있다. 간단한 예제를 작성해 보았다. 다음 3가지의 경우는 모두 같은 출력물..

C# 2008. 12. 26. 02:25
[C#] 한개의 객체 만들어 공유하기 #Singleton Pattern

유일무이한 인스턴스를 만들어 사용하기 프로그래밍을 하다 보면 여러 개의 클래스에서 한 개의 객체에 접근하고 싶을 때가 많습니다. 다음과 같은 클래스가 있다고 가정해봅니다. Code – Singleton.cs class Singleton { private int a; public Singleton() { a = 0; } internal void SetA(int val) { this.a = val; } internal int GetA() { return a; } } 간단한 클래스이니 주석이나 설명은 생략하겠습니다. 이 클래스의 객체를 생성하여 a값을 접근하는 두 개의 각각의 클래스가 있다고 생각해봅시다. Code – ClassA.cs class ClassA { Singleton singleton; publi..

C# 2008. 12. 25. 19:13
[C#] 고정크기배열 사용방법 #MarshalAs

앞서 포스팅한 자료와 마찬가지로 다음과같은 구조체를 만들어보면 public struct MyArray { public char[] charArray; public string str; } 크기는 8이 된다. fixed키워드를 사용하면 배열의 크기를 고정할 수 있지만, 안전하지 않은 코드(unsafe)영역으로 지정해야한다는 문제가 있다. MarshalAs키워드를 사용해 고정크기 배열 (혹은 고정크기 문자열)을 사용할 수 있다. [StructLayout(LayoutKind.Sequential)] public struct MyArray { [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)] public char[] charArray; [MarshalAs(Unman..

C# 2008. 12. 25. 18:54
[C#] 고정크기배열 사용방법 #fixed

다른 언어로 작성된 코드와 같은 기존코드, DLL, COM 프로젝트를 사용하다보면 고정크기의 배열을 사용해야 할 때가 있다. C# 1.1까지의 경우 고정크기를 사용하지 못하였다. 예를들어 다음과 같이 구조체를 선언하였을 경우 public struct MyArray { public char[] pathName; private int reserved; } 구조체의 크기는 8바이트가 된다. pathName배열의 경우 힙에 할당된 배열에 대한 참조가 된다.(포인터의 역할) 4바이트라는 것이다. 이러한 문제점을 해결하기 위해 C# 2.0부터는 fixed 문을 사용하여 고정크기의 배열을 만들 수 있게 하였다. public struct MyArray { public fixed char pathName[128]; } ..

C# 2008. 12. 25. 18:07
[WPF] Panel Class를 상속받아 나만의 패널 만들기 [FishEyePanel]

WPF에는 Canvas나 WrapPanel, Grid 등과 같은 패널들이 존재하죠 ~ 이러한 패널들을 상속받아 저만의 패널을 만들어 보는 방법을 소개합니다 ^^ Fish Eye라고 하면.. 물고기 눈이죠~ 만들고자 했던 패널은 마우스 움직임을 감지하여 마우스 주변의 아이템들의 사이즈를 늘리는 패널입니다. WrapPanel을 상속받아 사용해 보았습니다. 나름 상세한 주석을 달아놓았으니 부연설명은 필요 없을것입니다. using System; using System.Collections.Generic; using System.Windows.Controls; using System.Windows; using System.Windows.Media; using System.Windows.Input; namespac..

WPF 2008. 12. 24. 19:04
[C#] 특정 사이트의 HTML문서 긁어오기

이번 과제로 사용했던 메소드 잘 안긁어와진다면... StreamReader부분의 생성자에서 Encoding을 바꿔보세욤 private string GetHtmlString(string url) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default); string strHtml = reader.ReadToEnd(); reader.Close(); response.Close(..

C# 2008. 12. 24. 18:42
이전 1 2 3 다음
이전 다음

Blog is powered by Tistory / Designed by Tistory

티스토리툴바