본문 바로가기

etc/고급강좌(Advanced)29

[9] C# 문자열 (고급)(string vs stringbuilder) C#에서 문자열을 조작할때 주로 string을 그냥 사용합니다. 하지만, 성능을 고려한다면 string builder를 사용해야 합니다. C/C++에서 strcat를 이용해서 계속해서 string을 추가로 붙일때 미리 메모리에 큰버퍼를 할당해서 계속 붙이면 속도가 빠릅니다.그렇습니다. stringbuilder는 바로 윗줄에서 설명한대로 미리 버퍼를 생성한후 string에 + 오퍼레이터처럼 동작을 하기때문에 속도가 빠릅니다. 앞으로 속도를 요하는 프로그램을 개발할때에 제 경험상 메모리를 미리 할당해 놓고 계속 반복적으로 사용하는게 가장 성능에 좋습니다.그러나 이렇게 개발할려면 메모리 풀 개념 및 이것을 쉽고 빠르게 활용할 수있는 라이브러리가 있어야 합니다. using System;using System.C.. 2015. 2. 23.
[8] C# 반영 (C# Reflection) Reflection은 한국말로 반사 반영이다. 참 이 의미와 실제 동작에서는 다르다. C#에서 Reflection은 동작중(Runtime)객체에 있는 타입 정보를 얻기위해서 사용하는 방법이다.차후 C# DLL(Assembly)를 동적을 Load/Unload할 경우에서 아주 유용하게 사용할 개념이다. 다시 정리하면 실제 코드가 동작중일 때 생성한 객체 인스탄스에 있는 메소드, 프로퍼티, 생성자등을 동적으로 알아내는 방법이다. [Reflection을 특징] 동작중에 객체 특성(Attribute)를 볼수 있다.assembly에 있는 여러 인스탄스를 조사해볼 수 있다.컴파일 타임이 아닌 동작중에 메소드 또는 프로퍼티를 지연 바인딩할수 있다.동작중에 새로운 타입을 객체등으로 생성 할 수 있다.(Assembly를 .. 2015. 2. 23.
[7]C# 사용자 정의 특성 (C# Custom Attribute) 이전 블로그 강좌에서 C# 미리 정의되어 있는 특성(Attribute)에 대해서 알아 보았습니다. 오늘은 개발자(사용자) 정의 특성에 대해서 알아보겠습니다. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)] public class DeBugInfo : System.Attribute 사용자 정의 Attribute를 만들려면 System.Attribute를 상속 받고 이 Attribte을 validation, AllowMultiple 속성을 설정해야 합.. 2015. 2. 23.
[6]C# 특성(C# Attribute) C# 특성(이하 Attribute라고 하겠습니다.)은 태그를 코드에 넣어서 Runtime에 정보를 보여주기 위한 용도입니다. 그리고 C#에 미리 정의되어 있는 Attribute는 3가지가 있습니다. 물론 사용자 정의로 따로 설명할 예정입니다. 1)AttributeUsage[AttributeUsage( validon, AllowMultiple=allowmultiple, Inherited=inherited )] Validation: AttributeTargets에서만 사용하겠다는 의미이다. 아래 예제를 보면 좀더 쉽게 이해가 될수 있다. 그리고 Default는AttributeTargets.All이다. 모두 다 적용한다는 의미이다.AllowMultiple: 여러 군데도 동시에 사용한다는 의미이다. 아래 샘플참.. 2015. 2. 23.