[C#] Struct 마샬링 및 사용법
·
Programming/C#
using System.Runtime.InteropServices; namespace Test { [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] public struct TestSet { [MarshalAs(UnmanagedType.I4)] public int EntType; [MarshalAs(UnmanagedType.I4)] public int EntityID_1; [MarshalAs(UnmanagedType.R8)] public double EntityID_2; [MarshalAs(UnmanagedType.I4)] public int EntityID_3; [MarshalAs(UnmanagedType.R8)] public doubl..
[C#] C# 에서 대괄호가 가지는 의미, (사전 정의된 속성, 특성)
·
Programming/C#
In C# what is the thing written in square brackets before a class or a function? I am familiar to C and C++. I am using C# for the first time. I trying to learn about WCF and WPF. I using a tutorial in CodeProject. There the writer has given a sample code. There he has written stackoverflow.com stackOverFlow 에 유용한 예제가 있어서 해당 답변자의 말을 한국어로 요약 해 본다. 질문자가 올린 코드이다. 인터페이스 내에 정의된 메소드 앞에 대괄호로 무언가가 쓰여 있다..
[C#] async & await 을 lamdba 에서 사용시 오류
·
Programming/C#
비동기에 대한 기초적 개념을 알고 싶다면 MSDN 을 보는편이 훨신 좋을 것이다. . C#의 비동기 프로그래밍 async, await 및 Task를 사용하여 비동기 프로그래밍을 지원하는 C# 언어에 대해 간략히 설명합니다. docs.microsoft.com 비동기 실행 방식에는 Task, Thread, Async, Await 등의 문법이 존재하는데. 그 중 Async 와 await 을 lamdba 식에서 사용시 오류에 관해 간단히 설명해 보려 한다. 아래 예제에서 Task1 을 실행시키면 Run() 비동기평선이 제대로 실행되지 않고 종료 될 것이다. 초보자가 보기엔 이것이 '버그' 일 수 있으나, 엄밀히 말하면 버그는 아니다. using System; using System.Collections.Gene..
[C#] 델리게이트와 이벤트의 차이점
·
Programming/C#
해당코드는 [시작하세요! C# 6.0] 도서의 코드를 인용하였다. [끄적노트] Delegate와 Event의 이해 - 1부 [모처럼 블로그에 글을 씁니다.] 이제부터 얘기해 볼 주제는 “파리~~바게트!” ..가 아니다. 바로 C#의 ... blog.naver.com 위 포스팅을 참조하면 개념적으로 이해하는데 아주 도움이 된다. Cyp9715/tutorial_EventHandler_Vs_Delegate Contribute to Cyp9715/tutorial_EventHandler_Vs_Delegate development by creating an account on GitHub. github.com Delegate 판 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ..
[C#] IEnumerable 인터페이스 상속 및 객체 열거형 만들기
·
Programming/C#
해당 코드는 [시작하세요! C# 6.0] 도서 및 [MSDN]을 참조하였다. 제목이 난해하게 기재되어 있으나, foreach 가 어떻게 동작하는지 보여주는 코드와 같다. using System; using System.Collections; namespace ConsoleApp1 { class Hardware { } class USB { string name; public USB(string name) { this.name = name; } public override string ToString() { return name; } } class Notebook : Hardware, IEnumerable { private USB[] usbList = new USB[] { new USB("USB1"), ne..
[C#] 형변환 [as, is]
·
Programming/C#
C# 에서는 형변환이 C++ 과 달리 복잡하지 않고, 간결하게 떨어진다. 사전 지식 기본적으로 괄호 () 를 기반으로 한 C 스타일의 형변환을 사용할 수으며, 암시적 형변환 역시 지원한다. AS as 구문은 '.net FrameWork' 에서 오류를 발생시키는것이 상당히 큰 리소스 낭비임을 알아두면 이해가 쉽다. as 구문은 오류를 일으키지 않고도 '형 변환이 가능한지' 확인하기 위한 예약어다. as 구문으로 형 변환이 가능하다면 '지정된 타입의 인스턴스 값' 을 변환하고, 가능하지 않다면 null 을 반환하기 때문에 이를 통해서 형 변환이 성공하였는지 확인할 수 있다. AS 구문은 참조형 변수에 대해서만 사용이 가능하다, if ( a as int ) 같은 사용법은 모두 잘못되었다. (int 같은 형식이..
[C#] 인터페이스 사용 이유.
·
Programming/C#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 using System; namespace WindowsFormsApp1 { interface ISource { int GetResult(); } class Source : ISource { public int GetResult() { return 10; } public void Test() { Target target = new Target(); } } class Target : ISource { public int GetResult() { return 20; } public void Do(ISource obj)..
[C#] Thread, Task 의 간단한 사용법
·
Programming/C#
C# 에서 비동기를 위한 분기를 만드는 기법중에선 Thread 와 Task 가 있다. 결론적으로 말하면 굳이 Thread 를 사용할 필요는 없다. 우선 Task 부터 설명 하겠다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 using System; using System.Threading; using System.Threading.Tasks; class Example { static void aaa() { Thread.Sleep(5000); Console.WriteLine("aaa"); } static void bbb() { Console.WriteLine("bbb"); } static void Main() { T..
[C#] C++ DLL 을 사용하기.
·
Programming/C#
C++ 을 GUI로 이용하기 위해서는 크게 3가지플랜이 있다. 1. MFC 2. Qt 3. C# 1. MFC는 구데기고 2. Qt는 Qt Core 자체는 나쁘지 않으나 Qt Creator 가 제공하는 환경이 시궁창이라 개발하기 까다롭다. 물론 Visual Studio Extension 기능을 이용하면 안될것도 없으나, LGPL 이라던지, GPL 이라던지... 여러가지 라이센스 조건을 따지며 프로그램을 개발하기는 불편하다. 3. 하지만 Visual Studio C++, C# 은 개인이 상업용으로 앱을 개발하여 팔아도 합법이니 (다만 수익 규모가 일정 이상 넘으면 Visual Studio 를 사야한다.) C++ 코드를 C# 내에 이식하여서 사용하면 그만인 것이다. 그럼 이제 어떻게 하면 되는지 알아보자. 1..