[.NET Core] | #0 : 세상에서 가장 쉬운 서버 만들기
·
개발/C#
개요Unity로 게임 개발을 할때 서버가 필요하다면 흔히 .NET Core를 사용한다고 합니다.C++이나 Node.js 같은것도 쓴다고는 하는데 일반적으로는 .NET Core를 쓴다고 하네요. 그래서 저도 해보려구요. 아 참고로 제목이 오해를 불러일으키기 딱 좋은 형태인데요.저는 '세상에서 가장 쉬운 서버'를 만든다고 하는거지 '서버 만들기'가 세상에서 가장 쉽다고 하는게 아닙니다. 셋업일단 준비를 해봅시다. Visual Studio를 켜서 프로젝트를 만들어주면 됩니다.당연하게도 단순히 빈 프로젝트로는 안되구요. ASP.NET Core Empty라는 걸로 만들어봅시다. 이러면 뭐 프로젝트 셋업이 끝납니다. 마인드 셋업물론 그거만 한다고 셋업이 끝나지 않죠. 지금부터 제가 계속해서 클라이언트 개발자..
[C#] | Exception has been thrown by the target of an invocation. 은 대체 뭐고 어떻게 해결하는걸까
·
개발/C#
개요아. 이전에 FSM을 짜면서 한번 고생했던 기억이 있는 버그인데 또 만났습니다.    왜 뜨는거임?일단 이 예외는 Reflection을 사용할때 납니다. Reflection으로 접근중인 클래스, 메서드, 필드, 프로퍼티에서 예외가 Throw될 경우 '난 일단 뭔 Exception인지 모르겠는데 아무튼 저기서 예외라는데?' 라는 무책임한 마인드로 던져집니다. 정확히는 MethodInfo.Invoke()나 PropertyInfo.SetValue() 같은 Reflection을 통한 호출 과정에서 내부 메서드가 예외를 Throw 할 경우에 발생합니다.저같은 경우 Activator를 통한 클래스 생성 도중에 생성자에서 NullReference를 뱉으면서 받았습니다. 이걸 처음 만나면 일단 원인을 알 수가 없기..
[C#] | 확장 메서드 쓰고 싶다~.
·
개발/C#
개요    확장 메서드(Extension Method)가 뭘까확장 메서드는 기존에 존재하던 클래스의 기능을 '확장' 하는 메서드입니다.기존에 존재하던 클래스에 내 맘대로 메서드를 추가할 수 있다는 뜻이죠. 이해하기 쉽게 예시를 들어봅시다.using System;public void Main(){ int[] array = new int[10];}int 배열을 만들었죠. 근데 전 이 배열을 조금 더 쉽게 다루고 싶습니다.배열에서 특정 조건을 만족하는 값만 뽑는다거나 말이죠. 아실 분들은 아시겠지만 이런 기능들을 쉽게 제공해주는 Linq라는 기능이 C#에 존재합니다.특정 조건을 만족하는 값만 뽑는 메서드(Where)는 실제로 배열, List, Dictionary 같은 클래스의 멤버 함수로 존재합니다....존재..
[C#] | 대체 is not은 뭔데
·
개발/C#
개요STA+C를 계속해서 개발하던 도중에 is문을 사용할 일이 있어서 적다가 생각해보니 조건을 반전 시켜야 되더라구요. 괄호로 감싸고 느낌표를 달아주기가 귀찮아서 그냥 장난으로 is not 해봤는데 어라? 이게 있네?    is not은?쉽죠. 그냥 is와 반대되는 연산자입니다.  is에 대한 설명은 이곳으로...https://sundg0162.tistory.com/59 함수를 보면 이러한 부분이 있습니다.is 라... 상당히 낯선 문법입니다.이건 대체 뭘까요?     isis 는 타입 비교 연산자입니다. " data-og-host="sundg0162.tistory.com" data-og-source-url="https://sundg0162.tistory.com/59" data-og-url="https:..
[C#] | Type 비교에서의 'is' 와 'GetType()'
·
개발/C#
개요격 자의 리메이크를 진행하며 Cell 구조를 적을때 GetEntitiesT> 함수를 보면 이러한 부분이 있습니다.is 라... 상당히 낯선 문법입니다.이건 대체 뭘까요?     isis 는 타입 비교 연산자입니다. 그러니까 우리가 흔히 이것들이 '일치 하는가' 에 대해 검사할때 '==' 연산자를 사용하듯이것들의 '타입'이 '일치 하는가'에 대해 검사할땐 'is' 연산자를 사용합니다. 특이한 점은 '타입'이 일치하는가에 대한 기준이 상당히 느슨해서 어떠한 타입의 서브 타입이여도 일치 한다고 판단합니다. 예제를 들어보죠.이러한 클래스 두개가 있다고 해봅시다.public class Entity {}public class Player : Entity {} is를 통해 타입을 비교하면 이렇게 결과가 나오죠.E..