목록언어 (28)
개발하는 리프터 꽃게맨입니다.
저는 몇 년간 C와 C++ 만 다뤄왔고,C# 을 공부하면서 생소한 연산자를 몇개 보았습니다. 그것에 대해서 정리하는 포스팅을 작성하겠습니다. [문자열 결합 연산자] C# 에서는 문자열을 + 연산자를 통해서결합할 수 있습니다. [Null 조건부 연산자]이 연산자는 C# 6.0에서 도입됐습니다?. 연산자가 하는 일은 객체의 멤버에 접근하기 전에 해당 객체가 null 인지 검사하여 그 결과가 참이면 그 결과로 null을 반환하고, 그렇지 않은 경우에는 뒤에 지정된 멤버를 반환합니다. Player 객체의 _name에 ?. null 조건부 연산자를 이용하여 접근하고 있습니다.player1의 경우에는 _name 이 null 이었기 때문에 player1?._name 은 null 은 반환한것이고player2의 경우..
[데이터 형식] C#은 다양한 종류의 데이터 형식을 제공하고,수와 텍스트, 이미지, 소리를 다룰 수 있는 데이터 형식도 제공합니다. 하지만 이번에 다룰 것은 모든 데이터 형식의 근간을 이루는'기본 데이터 형식', '상수', '열거형' 입니다. [변수]변수를 코드에서 보자면 값을 대입시켜 변화시킬 수 있는 요소이지만, 메모리 쪽에서 보면 '데이터를 담는 일정 크기의 공간'이라는 의미를 갖기도 합니다.그러므로 우리가 C# 코드를 작성하면서 변수를 만들 때는 그 이면에 있는 메모리 세계도 함께 생각해야 합니다. 우리가 변수를 하나 선업하며, 이것은 컴파일러에게 "이 변수에 빌요한 메모리 공간을 예약해줘."라고 알립니다.가장 먼저 데이터 형식을 명시하고 그 다음에 변수 이름을 명시합니다.그리고 문장 종결을 표시..
앞으로 유니티 및 툴 개발하기 위해서C#이라는 언어에 대한 스터디를 진행합니다. 제가 스터디를 하면서 기록하는거라제 글을 보고 무엇을 배우는건 권장하지 않습니다. 교재는 '이것이 C#이다! 3판' 을 사용합니다. 일단 늘 하는 Hello World 부터 출력해보도록 합시다. using System; 은C의 include 와 유사해보입니다. System은 namespace이고해당 namespace 안에 유용한 가용 클래스들이 있는 것으로 보입니다. 없어도 System.Console.~~ 이런 형식으로 사용할 수 있다고 합니다. 조금 생소했던것은 using static System.Console; 부분입니다.using 키워드만 사용하면 네임스페이스 전체를 사용한다는 의미지만using static 은 어..
이것을 따로 부르는 개념이 있는지는 모르겠지만, 필요해서 연구를 하다보니 꽤나 쓸만한 개념인 것 같아서 포스팅 해봅니다. 대부분의 프로그램이 이런 방식으로 메인 루프가 존재합니다. 예를 들어서 우리가 게임을 만든다고 가정해봅시다. 그럼 플레이어가 화살을 쏜다고 하면 화살을 생성해야할 것 이고, 또 화살이 몬스터에게 닿으면 삭제를 해줘야 할 것 입니다. 그런데, 이런 식으로 루프 중간중간에 막 추가해버리면 코드가 꼬일 수 있습니다. 정확한 예시는 제시하긴 좀 애매하긴한데.. 어쨌든 우리는 함수를 예약해서 지연 처리를 할 필요성이 있다는 겁니다. (좀 엉렁뚱땅 넘어가는 느낌이긴 하지만..) 중간 중간에 특히, 특정 메모리를 추가로 할당하거나 삭제할 때, use-after-free 문제 등이 많이 발생하므로 ..
[ 목차 ] 1. 람다 표현식 C++에서는 '호출할 수 있는 객체'를 callable이라고 말합니다. 그 종류는 총 5개 1) std::function 2) 함수 포인터 3) operator() 4) bind에서 나온 타입 (아직 다루지 않은 내용) 그리고 lambda 람다식입니다. 새로운 '호출성 객체'라고 하죠, 람다는 다른 언어에서는 익명함수, 무명함수라고 말하며 기능적으로는 '재활용하지 않는 일회용 함수'라고 말합니다. 이름이 없고, 필요할 때 딱 만들어서 쓰고 버리는 함수라고 할 수 있죠. 예시는 아래와 같습니다. 즉석 해서 함수를 정의한다고 보면 되겠습니다. 이런 식으로 람다 변수로 초기화해서 호출하는 방법도 있고, 바로 호출하고 버리는 방법도 있고, 매개변수로 넘기는 방법도 있습니다. 더 다..