앞서 포스팅한 자료와 마찬가지로 다음과같은 구조체를 만들어보면 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..
다른 언어로 작성된 코드와 같은 기존코드, 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]; } ..
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..
이번 과제로 사용했던 메소드 잘 안긁어와진다면... 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(..