해당코드는 [시작하세요! 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 ..
Programming
해당 코드는 [시작하세요! 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# 에서는 형변환이 C++ 과 달리 복잡하지 않고, 간결하게 떨어진다. 사전 지식 기본적으로 괄호 () 를 기반으로 한 C 스타일의 형변환을 사용할 수으며, 암시적 형변환 역시 지원한다. AS as 구문은 '.net FrameWork' 에서 오류를 발생시키는것이 상당히 큰 리소스 낭비임을 알아두면 이해가 쉽다. as 구문은 오류를 일으키지 않고도 '형 변환이 가능한지' 확인하기 위한 예약어다. as 구문으로 형 변환이 가능하다면 '지정된 타입의 인스턴스 값' 을 변환하고, 가능하지 않다면 null 을 반환하기 때문에 이를 통해서 형 변환이 성공하였는지 확인할 수 있다. AS 구문은 참조형 변수에 대해서만 사용이 가능하다, if ( a as int ) 같은 사용법은 모두 잘못되었다. (int 같은 형식이..
#include #include #include #pragma comment(lib, "ws2_32") #define PORT 28888 #define PACKET_SIZE 36 #define SERVER_IP "127.0.0.1" using std::cout; using std::endl; void server() { WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData); SOCKET hListen; hListen = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); SOCKADDR_IN tListenAddr; tListenAddr.sin_family = AF_INET; tListenAddr.sin_port = htons(PORT);..
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++ 에서 함수를 인자로 전달하는 방법 | C++ 에서 함수를 인자로 전달하기 C++11 이전에는 다른 함수의 인자로 함수를 전달하는 방법은 함수 포인터가 유일했습니다. C언어에서 이어져온 방식이기 때문에 C개발자들에게는 크게 불편하 mynameisdabin.tistory.com 해당 포스팅을 살펴보다 람다식 에서 햇갈릴만한 내용이 있기에 짧게 정리한다. 우선 람다식은 다음과 같이 작성된다. [캡처절] (매개변수) mutable -> 반환형식 { 함수내용 } 1. 캡쳐절은 외부 변수를 가져다 쓸 수 있는 공간이고, 2. 매개변수는 말 그대로 함수 선언시 필요한 매개 변수이다. 3. mutable 은 함수 내에서 외부 변수를 수정할 수 있게 해 주는 옵션이고. 4. 반환형식과 함수 내용은 아..
자료를 찾아보면 emplace_back 이 더 우수한 녀석이라거나 생성자 호출 차이라거나 그런 말들이 많이 있으나. 일단 최신 컴파일러 관점에서는 둘 다 아닌것 같다. emplace_back 과 push_back 의 차이 item 타입의 생성자가 타입을 인자로 받는다면? push_back 함수는 '객체' 를 집어 넣는 형식으로, 객체가 없이 삽입을 하려면 "임시객체 (rvalue) " 가 있어야 합니다. 또는 암시적 형변환이 가능하다면, openmynotepad.tistory.com 엄준식사생팬 님의 블로그에서 해당 코드를 참조해서 G++ 9 , Visual Studio 2019 (ISO C++14 표준) 에서 테스트 해 보았지만 결과는 같았다. 즉, 이유는 모르겠지만 STD 코드가 수정되었음을 추론해 ..
C4819 Warning 의 경우는 파일의 저장 포맷 형식이 UTF-8 With BOM 으로 설정되지 않아서 발생하는 문제이다. 여기서 UTF-8 은 그냥 같은 UTF-8 이 아니라, UTF-8 Without BOM 과 UTF-8 With BOM 으로 나뉘어 진다. .cpp, .hpp 파일을 저장 할 때, 한글, 중국어 등 multi-byte characters 가 하나라도 들어간다면 반드시 UTF - 8 With BOM(Signature) 으로 설정해야만, 해당 경고가 없어진다. 참고로, 해당 오류는 오지랖 넓은 '경고' 메세지가 아니다. 해당 문제로 인해 컴파일 단계에서는 문제가 없을 지 몰라도 Runtime 단계에서 디버그 해볼 시에 한글 글자가 깨지는 모습을 살펴 볼 수 있다. UTF-8 with..
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++ 에는 constexpr 이라는 예약어가 있다. 보통 학생들은 잘 모르는 예약어인데, 왜냐면 딱히 이것까지 가르칠 필요는 없기 때문이랄까... constexpr 에 대한 간단한 예시를 들면 다음과 같은 것이 있다. 1 2 3 int cc = 10; const int a = cc; // OK constexpr int b = cc; // Fail cs 보면 알겠지만 const 키워드는 runtime 에 결정되도 상관이 없는 반면 constexpr 의 경우는 반드시 compile 시간에 결정되어야 한다는 차이점이 있다. 때문에 나는 모두의 코드 블로그 에서 예제로 constexpr 을 사용하는것을 참조해 왔는데 다음과 같은 코드이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ..