C# (91) 썸네일형 리스트형 @ 심벌 사용법 @ 심벌을 문자열 앞에 사용하면, 해당 문자열 안의 Escape 문자를 무시하고 문자 그대로 인식하도록 한다. string filename = "C:\\Temp\\1.txt"; // @심벌을 사용하여 보다 자연스럽게 패스 지정 string filename = @"C:\Temp\1.txt"; [출처] http://www.csharpstudy.com/Tip/Tip-at-symbol.aspx 불변성과 가변성(공변성, 반공변성) 불변성(Invariance) - X -> Y가 가능하더라도 C는 C로만 사용할 수 있다. 기본적으로 제네릭은 불변이다. 동일 타입만 사용. 상/하위 타입으로 레퍼런스 변환 불가. interface IFoo IFoo a = new Foo(); 가변성(Variance) -특정 타입의 객체를 다른 타입의 객체로 변환할 수 있는 성격을 말한다. 공변성(Covariance) - 출력/리턴 타입에 T 사용 - Dog보다 상위타입에 assign 가능 - X -> Y가 가능할 때, C가 C -> C로 가능하다. interface IFoo IFoo a= new Foo(); 반공변성(Contravariance) - 입력/메서드 파라미터에 T 사용 - Animal보다 하위타입에 assign 가능 - X -> Y가 가능할 때.. Call By Reference(값에 의한 전달) - ref, out 값에 의한 전달 - 값 복사란 두 개의 메모리가 존재하고 한쪽의 메모리에 들어있는 값을 다른 쪽의 메모리로 그 값만큼 복사하는 행위이다. ref에 의한 참조 - 참조형 매개변수는 메모리의 위치에 대한 참조이다. 함수를 호출하면 참조형 매개변수는 함수가 호출될 때 넘겨지는 변수의 메모리 주소에 대한 참조값을 가지게 된다. - 참조로 값을 넘길 때 주의할 사항은 참조할 대상은 반드시 초기화되어야 한다는 것이다. 초기화 되지 않은 변수를 넘겨줄 때 컴파일 에러가 발생한다. - C의 포인터와 유사하게 메모리 내에 저장되어 있는 값을 가르킨다. 하지만 포인터라고 할 수는 없는 것이, 'unsafe'라는 포인터를 사용하기 위한 키워드가 따로 존재하기 때문이다. 단순히 참조를 하기 위한 키워드로 사료된다. out에 .. Invoke와 BeginInvoke의 차이점 Invoke와 BeginInvoke의 목적 - UI 컨트롤박스를 생성하게 되면 내부 스레드가 자동으로 생성되는데 별도의 스레드를 생성하여 해당 컨트롤 박스에 접근하려 하면 서로 다른 스레드가 하나의 컨트롤 박스 객체에 접근을 하게 되는데, 이 때 교착상태(크로스 스레드, Cross Thread)가 발생하여 Invoke 또는 BeginInvoke를 사용하여 해당 크로스 스레드 문제를 방지하는데 목적이 있다. - C# Form 프로그래밍에서는 Main Thread(UI Thread)와 Other Thread(Work Thread)로 분리되어 작업이 된다. Other Thread에서 Main Thread의 UI 작업을 하려고 하면 불가능하다. 왜냐하면 컨트롤을 생성한 Main Thread에서만 접근이 가능해서.. Action/Func/Predicate Action 리턴 값이 없는 함수에 사용되는 Delegate 0개부터 16개의 파라미터까지 받아 들일 수 있다. Func Action Delegate와 비슷한데, Func는 반드시 리턴 타입이 ~ Generic 폼 내에, 즉 템플린 파라미터 안에 ~ 존재해야 한다. Action과 같이 16개까지 입력파라미터를 받아 들일 수 있다. Predicate 리턴값이 반드시 bool이어야 한다. 입력 파라미터는 1개이다. 이 특수한 delegate는 .Net의 Array나 List 클래스의 메서드들에서 자주 사용된다. [출처] http://www.csharpstudy.com/Tip/Tip-Func.aspx .NET Reflection을 이용한 메서드 호출 .NET Refrection은 .NET 객체의 클래스 타입, 메서드, 프로퍼티 등의 메타 정보를 런타임에 알아내는 기능을 제공한다. 또한, 이러한 메타 정보를 얻은 후, 직접 메서드를 호출하거나 프로퍼티를 변경하는 등의 작업도 가능하다. .NET Reflection을 이용한 메서드 호출 - .NET Reflection을 이용해서 메서드 프로토타입 즉, 함수 인자, 리턴값 등의 메타 정보를 읽어 오는 것이 가능하며, 이를 통해 직접 그 메서드를 호출하는 것이 가능하다. 특정 메서드 정보를 얻기 위해서 Type.GetMethod()를 호출하고, 모든 메서드 정보를 가져오기 위해서는 GetMethods()를 호출한다. class Program { static void Main(string[] args) { v.. 그라데이션이 포함된 이미지를 배경으로 한 Form 만들기 그라데이션이 들어간 이미지를 배경으로 한 Form을 만들어야 했던 적이 있다. Background 색을 Transparent로 설정하여 배경색을 투명으로 하라고 했지만 그라데이션 색은 이상하게 보였다.. 구글링을 한 결과 찾을 수 있었다.. 하지만 오류?가 있었는데.. 모든 데스크톱에 다 보인다는 점이 있었다.(설정값 때문에..ㅠ) [출처] https://www.codeproject.com/Tips/1224958/Winforms-Transparent-Background-Image-with-Gradien 메시지 처리 방법 3가지 훅(Hook) : 원하는 정보를 엿보거나 가로채는 도구 후킹(Hooking) : 실제로 정보를 엿보고 조작하는 행위 1. IMessageFilter 상속 - 대부분의 이벤트에 적용 가능(마우스, 키 이벤트 등) - m.Msg를 통해 이벤트의 종류를 알아보고 하단에서 그것에 대한 상세처리를 하는 구조이다. - return 값은 true와 false가 있다. - true의 경우, 메시지 후킹 후 현재 포커스된 컨트롤에게 해당 메시지를 보내줍니다. - false의 경우, 메시지 후킹 후 현재 포커스된 컨트롤에게 해당 메시지를 보내지 않습니다. 2. ProcessCmdKey 오버라이드 - 주로 키 입력 가로챌 때 사용하는 듯 3. WndProc 오버라이드 - 다른 프로그램으로부터 메시지 받거나 다른 프로그램에게.. 이전 1 ··· 7 8 9 10 11 12 다음