Programming

Programming/C#

Generics

Generics Study 참조 : Pluralsight

Programming/C#

Interface class 에 대한 생각들..

Maintainable : - base class로써 상속 클래스에서 꼭 구현이 필요한 내용들을 알려준다.- compile 단계에서 상속 클래스의 오류 발생 가능성을 줄여준다. Extensible : - 공통된 기능을 사용하는 상속 클래스들을 Factory pattern을 이용하여 쉽게 접근 가능하도록 한다.- IBaseClass 를 만들고 이를 상속하는 여러 클래슬들을 ChildClass1, ChildClass2 --- 있다고 가정할 때에.. 모든 클래스의 접근을 IBaseClass 객체를 이용하여 참조가 가능하므로 코드의 반복성을 줄일 수 있다.

Programming/C#

App.Config 사용하기..

.Net Framework 의 프로젝트에는 App.config 파일을 추가할 수 있다.app.config 파일을 작성하고 build를 수행하면 실행 파일의 경로에 app.config 파일이 그대로 복사가 된다. 프로그램이 실행이 될때에 app.config파일의 내용을 참조하여 runtime 시에 사용할 수 있다. 1. key 값을 설정할 수 있다. 아래와 같이 사용할 있다. 2. Library Probing 참조하는 dll 라이브러리의 경로를 임의의 지정된 폴더에서 probing 하도록 설정을 할 수 있다.

Programming/C#

Abstraction vs Interface Class??

클래스 상속을 위해 부모 클래스를 생성할 때 고려할 수 있는 대상은 3가지가 될 수 있다. 1. standard class 2. abstract class 3. interface class 1번의 경우는 일반 클래스로 자식 클래스에서 override를 수행할 때에 부모 클래스의 함수가 수행 되므로, 특정 자식 클래스에 대한 함수를 따로 구현 할 떄에 이를 compile 단계에서 알수가 없다. 그와 반대로 2,3번의 경우는 위의 상황에 대해 compile 단계에서 에러를 발생한다. 그럼, 어떤 상황을 생각 했을 때에 abstract 와 interface 를 선택할 것인가?? 차이점을 살펴 보자. - abstract 클래스는 구현이 가능한 클래스이나, interface의 경우는 정의만 되어진 클래스이다. -..

Programming/C#

User Setting 파일저장, 로드, 경로 지정

public class MySettings { public int MyNumber { get; set; } public string MyString { get; set; } public void Save() { using (Stream stream = File.Create(SettingsFile)) using (StreamWriter writer = new StreamWriter(stream, Encoding.UTF8)) { writer.WriteLine(MyNumber); writer.WriteLine(MyString); } } public static MySettings Load() { if (!File.Exists(SettingsFile)) return DefaultSettings; using (S..

Programming/C#

Is & As & Cast

static void Main(string[] args) { object[] objects = { new M3(), new Hooptie(), }; foreach (M3 obj in objects) { Console.WriteLine(obj); Is(obj); As(obj); Cast(obj); Console.WriteLine("------"); } } private static void Cast(object obj) { try { M3 m3 = (M3)obj; Console.WriteLine("(M3) returned {0}", m3); } catch (InvalidCastException) { Console.WriteLine("InvalidCastException"); } } private stati..

Programming/C#

Abstract & Virtual & Override

Abstract Method (추상 메소드) : base class에서 선언만 된다. : 파생 클래스에서 구현을 해야 한다. : abstract method 가 구현되어 있는 클래스는 abstract 제한자를 설정해야한다. ex) public abstract class MyCalss Virtual Method (가상 메소드) : base class에서 선언 및 구현이 가능하다. : 파생 클래스에서 재정의 할 있도록 되어있다. Virtual Method 사용하는 이유 : Virtual method를 선언하면, vtable이 생성되고, 이를 통해서 함수를 사용할 때 vtable을 참조하여 수행 속도를 향상시킨다. Override 재정의 : virtual, abstract method를 재정의할 때는 over..

Programming/C#

c# winform size 자동 변경 문제.

C# winform을 사용하면서 분명히 디자인은 특정 크기로 설정하였지만, 자동적으로 사이즈가 변경이 되어 로드가 되는 경우가 있다. 이럴 때에는, form 속성의 AutoSize를 false 로 설정하면 자동으로 변경되는 문제를 해결할 수 있다. 왜냐하면, AutoSizeMode 의 설정이 변경이 되면 해당 상태에 맞추어 자동으로 다시 레이아웃 되기 때문에 사이즈가 변경이 되는 경우가 발생한다. 이는 해당 폼에 새로운 컨트로을 추가하여도 동일한 이유로 레이아웃이 변경된다.

Programming/C++

문자열에 대한 정리 (char, wchar, tchar)

문자열에 대해서 늘 할때마다 고생을 하고 있다.. 프로젝트 속성에서 멀티바이트 또는 유니코드 중에 설정해서 문자열에 대한 처리를 생각하게 된다. 멀티바이트의 경우는 보통 한 문자를 1byte로 처리하다가 경우에 따라 2byte로 묶어서 처리를 한다. 이와 같이 그 char에 대한 크기가 고정적이지 않기 때문에 문자열이 깨지는 현상이 생길수 있다. 이에 대한 문제 해결책이 유니코드.. 유니코드는 모든 글을 2byte로 처리를 한다. 하지만 시스템 설정에 따라서 설정을 용이하게 문자열을 처리할 수 있는 것이 tchar..!! 아래와 같이 설정이 바뀐다.. #ifdef _UNICODE #define TCHAR wchar_t #define _T(x) (Lx) #define _tcscpy_s wcscpy_s #e..

Programming/C++

Static & Dynamic Library 관련 내용..

참고 블로그.http://darkpgmr.tistory.com/50 Static , Dynamic library 사용Static library 의 경우는 .lib 파일만 로드를 하면 됨. 해당 코드를 사용되는 위치에 로드를 하는 방식으로 동작함.Dynamic은 .lib, .dll 파일 모두 필요함. 요약../MD , /MT 의 차이 설명CRT (C Runtime LIbrary)를 컴파일시에 동적라이브러리로 로드할지 아니면 정적으로 할지를 결정하는 것.따라서 외부 라이브러리가 /MD로 컴파일 되어 있고, 이를 사용하는 응용프로그램에서 /MT로 할 시에 동일한 라이브러리가 겹쳐서 로드가 될수 있음. 그에 따른 컴파일 오류가 발생함. 1. 동적 라이브러리(Dynamic Link Library)프로그램 실행 시..

RichardBang
'Programming' 카테고리의 글 목록 (11 Page)