Programming 썸네일형 리스트형 C# 물음표 2개(??) 연산자 C#에는 ??(물음표 2개)라는 연산자가 존재합니다.??는 ?? 앞의 값을 기준으로 ?? 앞의 값이 null이면 뒤의 값을 대입하고 ?? 앞의 값이 null이 아니면 앞을 값을 대입하는 것입니다.소스 코드를 보면서 확인해 보겠습니다. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication5 { class Program { static void Main(string[] args) { string szTemp = "Hello World"; string szRes = szTemp ?? "Bye World"; .. 더보기 C#의 키워드(Keywords) 프로그래밍 언어에서 가장 기본이 되는 것은 키워드입니다. 보통 프로그래밍 언어에서 예약어는 특별한 기능을 하기 때문에 변수명으로 사용이 불가능합니다.다만 C#에서는 @를 앞에 추가하면 변수명으로 사용이 가능합니다.@if 등의 변수명으로 생성이 가능합니다.다만 굳이 저렇게 변수명을 지을 필요는 없을 것 같습니다.C#이 지원하는 키워드는 다음과 같습니다. abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit .. 더보기 [C++11] cbegin()과 cend(), crbegin()과 crend() C++의 STL 컨테이너들은 Iterator(반복자)를 통해서 내부에 있는 데이터의 한 위치를 가리킬 수가 있습니다.Iterator의 종류는 Input, Output, Foward, Bidirectional, Random Access로 구분할 수 있습니다.Input과 Output은 각각 출력과 입력만을 담당하는 최소한의 기능을 가지고 있는 Iterator입니다. Foward의 경우는 순방향 Iterator로 한 쪽으로(처음 -> 끝) 이동하는 Iterator입니다.Bidirectional은 이름 그대로 양방향으로 이동이 가능한 Iterator입니다.Random Access는 랜덤하게 한 곳을 콕 찝어서 이동이 가능한 Iterator입니다.Input -> Foward -> Bidirectional -> R.. 더보기 자신의 IP를 확인하기 자신의 IP를 확인하는 방법입니다.이전에 작성한 코드인데 Visual Studio 2012에서는 다음과 같은 코드를 맨 위에 삽입해야 합니다. #define _WINSOCK_DEPRECATED_NO_WARNINGS Visual Studio 2010이나 그 이하 버전에는 사용하지 않아도 될 것 같습니다.전체 코드는 다음과 같습니다.IP가 여러 개 리턴될 수 있기 때문에 vector로 리턴을 하도록 하였습니다. #define _WINSOCK_DEPRECATED_NO_WARNINGS #include #include #include #include #pragma comment(lib, "ws2_32.lib") using std::cout; using std::endl; using std::string; usin.. 더보기 [C++11] final과 override C++에서는 명시적으로 클래스의 상속을 막는 방법이 없었습니다.C++ CLI 등에서 selaed라는 키워드가 존재했지만 이것은 표준이 아닌 MS 확장 키워드입니다.C# 역시 sealed라는 키워드를 사용합니다.C#의 sealed 키워드에 대한 내용은 다음 링크에서 확인 가능합니다.2014/12/27 - [Programming/C#] - sealed 키워드를 사용한 클래스 상속 방지C++ CLI나 C#이나 모두 닷넷을 지원하기 위해서 만들어진 것을 생각하면 공통된 특정 키워드가 있는 것이 이해가 갑니다.C++11에서는 상속을 정교하게 다루기 위해 final과 override라는 새로운 키워드가 추가되었습니다.final은 상속을 차단하기 위해 추가된 키워드이고, override는 클래스의 메소드를 명시적으로.. 더보기 [C++11] RValue Reference(4) 6. RValue Reference의 추가적인 특징RValue Reference의 추가적인 특징들입니다.이미 설명한 것과 같이 RValue의 Move Sematics와 Perfect Fowarding은 성능 향상에 많은 도움을 제공합니다.그 외 RValue Reference의 추가적인 특징은 다음과 같습니다.1) RValue Reference와 LValue Reference를 받는 함수를 오버로딩 가능하다.RValue와 LValue는 다르게 취급되기 때문에 RValue Reference와 LValue Reference를 전달받는 함수는 오버로딩이 가능합니다.이미 생성자와 대입 연산자를 통해서 알아 본 내용입니다. #include using namespace std; // A class that conta.. 더보기 [C++11] RValue Reference(3) 5. Forwarding Problem과 Perfect FowardingFowarding Problem은 레퍼런스 타입을 매개 변수로 갖고 있는 제너릭 함수에서 발생할 수 있습니다.레퍼런스 타입의 매개변수를 다른 함수에 전달해 주는 과정에서 발생할 수 있습니다.예제를 먼저 확인하겠습니다. struct W { W(int&, int&){} }; struct X { X(const int&, int&){} }; struct Y { Y(int&, const int&){} }; struct Z { Z(const int&, const int&){} }; template T* factory(A1& a1, A2& a2) { return new T(a1, a2); } int main() { int a = 4, b = 5;.. 더보기 [C++11] RValue Reference(2) 3. Move SemanticsRValue Reference는 Move Semantics를 통해서 성능 향상이 가능합니다.객체의 리소스를 다른 객체로 이동시켜주는 것이 Move Semantics입니다.왜 기존의 복사가 아닌 이동을 사용해야 되는가에 대한 이유는 다음과 같습니다.RValue가 표현식 이후에 어디에서도 참조할 수 없는 임시적인 값이기 때문에 복사 대신 이동을 하는 것입니다.LValue라면 리소스의 이동을 해버리면 원본이 훼손되는 문제가 있지만 RValue는 그런 문제가 생기지 않습니다.이 Move Semantics의 이점은 복사 생성자, 복사 대입 연산자 등에서 발생하는불필요한 리소스의 할당 및 복사, 해제의 과정을 생략할 수 있다는 점입니다.STL의 vector를 통해서 자세히 알아보도록 .. 더보기 이전 1 ··· 16 17 18 19 20 21 22 23 다음