March 25, 2010
ListBox 에서 선택된 다중항목 지우기

[code lang="vbnet"] With ListBox1 ' If we have some selected items. If .SelectedIndices.Count > 0 Then ' Loop through selected indicies to get the index number of ' the selected item. ' We need to cound back through the list to avoid reindexing the ' the list as we go. For i As Integer = […]

Read More
March 25, 2010
데이터베이스 연동시 DBNull 에러 피하기

데이터베이스 연동관련 프로그래밍을 할 때 DBNull 관련 예외를 처리하는것이 가장 중요하다고 생각합니다. 여기에서는 3가지 방법으로 DBNull 예외를 제어하는 방법을 살펴보도록 하겠습니다. 1. 데이터와 DBNull을 직접 비교하는 방법 가장 일반적인 방법입니다. 닷넷에서 DBNull은 정확히 System.DBNull.Value 값입니다. 읽으려하는 데이터를 System.DBNull.Value 와 비교하여 아래와 같이 처리 할 수 있습니다. [code lang="vbnet"] if item("고객이름") is System.DBNull.Value then ' DBNull […]

Read More
March 25, 2010
Extension 클래스를 통해 기존 클래스를 확장하기

C# 3.0 에서부터 새로 제공되는 기능으로 Extensions 라는 것이 있다. 이 것은 기존에 정의되어 있는 클래스를 확장할 수 있도록 해주는 방법이라고 할 수 있다. 백문이 불여일견이니 어떻게 하는지 한번 살펴보도록 하겠다. 일단 먼저 기본으로 제공되는 String에 현재의 문자열의 길이를 리턴해주는 GetStringLength() 라는 함수를 제공하도록 해보겠다. 프로젝트를 하나 생성하고 StringExtensions 라는 이름의 클래스를 하나 추가한 후 […]

Read More
March 21, 2010
The Shell and Managed Code

이번에 기존에 개발중이던 Shell Extension 프로그램의 코드를 C#으로 변경하면서 계속 내용을 찾아보던중 좀 미심쩍은 부분이였는데, 마이크로소프트 MSDN에 명시가 되어 있었다.. ㅠㅠ Shell extensions should not include managed code. Shell extensions are loaded into all processes that use the Shell namespace and run in-process by definition. Managed code built against one version of the common language […]

Read More
March 19, 2010
XmlTextWriter 클래스를 이용한 XML파일 생성방법

.NET Framework에서는 XML을 쉽게 기록할 수 있도록 XmlTextWriter  클래스를 제공하고 있다. 이 XmlTextWriter 클래스는 속도가 빠르고, 캐시되지 않으며, 앞으로만 이동 가능한 방법을 제공한다. 아래는 XmlTextWriter 클래스를 사용한 예제이다. XmlTextWriter 사용 예제 [code lang="csharp"] void IDataProcessor.SaveList(List<ProgramInfo> programList, string filePath) { XmlTextWriter writer = new XmlTextWriter(filePath, null); // 자식요소에 따라 들여쓰기하기 writer.Formatting = Formatting.Indented; writer.WriteStartDocument(); writer.WriteComment("This file […]

Read More
March 19, 2010
바이너리(Binary) 파일 Read/Write 하기

.NET Framrwork에서는 바이너리(Binary) 파일을 읽고 쓰기위한 BinaryReader, BinaryWriter 클래스를 제공한다. 이 클래스를 이용하면 쉽게 파일을 읽고 쓸 수 있다. BinaryReader 를 이용한 파일 읽기 [code lang="csharp"] // 파일 열기 FileStream fs = File.OpenRead("a.bin"); // 스트림을 이용하여 BinaryReader 클래스 생성하기 BinaryReader br = new BinaryReader(fs); // 파일 Read용 임시 변수 Int16 temp = 0; // 2바이트 […]

Read More
March 19, 2010
Generic List 복제하는 방법

클래스에서 Copy() 나 Clone() 함수를 제공하지 않아 For 문을 이용해서 대입해야 하는 줄 알았다... 😥 [code lang="csharp"] // Generic List 생성 List<int> a = new List<int>(); // 값 추가하기 a.Add(1); a.Add(2); a.Add(3); // List 복제하기 List<int> b = new List<int>(a); [/code] 위의 코드와 같이 생성할 List 템플릿의 생성자에 복제할 List 클래스의 인스턴스를 넘겨주면 복제가 된다.

Read More
March 19, 2010
GAC(Global Assembly Cache)에 대해 알아보자

1. GAC란? GAC(Glocal Assembly Cache)란 마이크로소프트사의 CLR(Common Language Runtime) 플랫폼에 도입된 .NET 어샘플리 캐시입니다. 즉, 특수하게 관리되는 중앙 저장소를 두는 접근방법을 통해서 예전에 발생했던 DLL 지옥과 같은 문제가 발생하는것을 피하기 위한 공유 라이브러리라고 생각하시면 됩니다. GAC에 존재하는 어셈블리들은 강력한 이름으로 서명되어 있기 때문에 동일한 이름이지만 버전이 틀린 여러개의 파일을 동시에 보관할 수 있습니다. 2. GAC의 […]

Read More
March 19, 2010
[Book] Effective C#

데이터 멤버 대신에 항상 프로퍼티를 사용하라 const 보다는 readonly가 좋다 cast 보다는 is나 as가 좋다 #if 대신 Conditional Attribute를 사용하라 항상 ToString()을 작성하라 value 타입과 reference 타입을 구분하라 immutable atomic value 타입이 더 좋다 value 타입을 사용할 때 0이라는 값이 의미를 가질 수 있도록 하라 ReferenceEquals(), static Equals(), instance Equals(), operator==의 상호 연관성을 이해하라 GetHashCode()의 […]

Read More
March 18, 2010
.NET Assembly 등록하기

.NET Assembly를 운영체제에 등록할때는 regasm 명령어를 사용하면 된다. 😉 등록할 때 windowsmicrosoft.netframeworkv2.0.50727regasm Test1.dll /tlb:Test1.tlb /codebase 제거할 때 windowsmicrosoft.netframeworkv2.0.50727regasm Test1.dll /unregister 이걸 못찾아서 또 몇십분을 헤맸다....... 😥

Read More
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram