[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..
[C#] | string과 StringBuilder
·
개발/C#
개요생각해보니 제가 취업할땐 C++이 아니라 C#과 Unity를 사용하여 취업할텐데 C++ 공부만 적어봤자 C#에서의 어필이 별로 없는 것 같아서 앞으론 C#도 적겠습니다.    stringC#에서의 string은 여타 다른 언어들과 같이 문자열을 담는 변수입니다.C++에선 클래스라는 차이점이 있지만 대충 넘어갑시다. string에는 커다란 문제점이 하나 있습니다.바로 수정이 불가능하다는 것이죠. ? 무슨 이상한 소리세요?string str = "수정 전";str = "수정 후";수정 되는데요? 아뇨. 수정이 되는 것 처럼 보일 뿐입니다. string은 내부적으로 수정이 불가능하며 수정한 것처럼 보이는 것은 그저 string 변수에 새 주소를 다시 할당할 뿐이죠.그러니까 string은 대충 수정할 수 있..