암묵적 구현`public`으로 구현한느 방식public class Person : IAct, IRun { public void Act() // 💛암묵적 구현 { Console.WriteLine("A"); }}암묵적 구현은 `public`이므로 외부에서 객체를 통해 호출이 가능하다.명시적 구현`private`으로 구현하며 `[인터페이스이름.함수명]` 형식으로 함수 이름을 표시하는 방식public class Person : IAct, IRun { void IAct.Act() // 💎명시적 구현 { Console.WriteLine("B"); } void IRun.Act() // 💎명시적 구현 { Console.WriteLi..
`enumerate` 영어로 수를 세다. 카운팅 하다!!두 인터페이스는 열거자와 관련이 있다. `using System.Collections;`C#의 모든 Collections 컬렉션은 IEnumerable, IEnumerator를 상속받아 구현하고 있다.그래서 List, Array 같은 컬렉션 클래스 객체들을 `foreach` 문에서 돌릴 수 있는 것!!IEnumerator => 데이터를 리턴(Getter) 하는 열거자IEnumerable => 열거자를 리턴하는 Getter의 Getter IEnumerator : 열거자`IEnumerator` : 열거자를 구현하는데 필요한 인터페이스클래스 내부의 컬렉션에 대해 반복할 수 있도록 도와준다.public interface IEnumerator{ obje..
NullableNullable => Null + able. 값이 없다는 것을 표현할 수 있도록 `int` 같이 `null` 값을 가질 수 없는 데이터들이 `null` 값을 가질 수 있도록 하는 것.객체를 참조하는 변수는 (Monster `monster` 같은) `null` 을 가질 수 있다.그러나 `int`, `struct` 같은 기본 자료형 변수는 `null`을 가질 수 없기 때문에 C# 에서는 값이 없다는 것을 표현할 수 있도록 이 같은 변수들이 `null` 값을 가질 수 있도록 해주는 문법이 있다. => Nullable값이 없으면 `return 0` 혹은 `return -1` 이런식으로 많이 표현하는데 `return null`로 표현할 수 있다면 더 좋을 것이다 Nullable 속성과 함수`Valu..
Reflection리플렉션을 사용하면 X-Ray 찍는 것과 같이 객체의 이름, 모든 멤버, 이벤트 목록 등등 객체의 세세한 정보들까지 객체의 모든!! 정보를 런타임 중에 가져와 분석하고 사용할 수 있다. C++엔 없고 C#에만 있는 기능이다. 그래서 C#을 사용하는 유니티에선 실행 중에도 멤버에 무엇이 있는 지를 체크하고 이에 접근할 수 있는 UI를 열어 주는 등등 C#의 리플렉션 기능을 활용한다. 언리얼은 리플렉션 기능이 없는 C++을 사용하기 때문에 리플렉션을 모방하는 방식으로 리플렉션을 위한 매크로 함수를 멤버나 함수 등등에 붙이고 이 정보를 가지고 파싱하고 따로 기록하여 리플렉션 하는 방식을 취한다고 한다. .NET Reflection은 .NET 객체의 클래스 타입, 메서드, 프로퍼티 등의 메타 ..
예외 처리게임에선 예외처리를 잘 하지 않는 편이다. 그냥 크래쉬 된 채로 냅두고 문제가 되는 코드 자체를 나중에 수정하는게 보통이다. 예외처리가 큰 의미가 없기 때문이다. 그래도 게임이라도 네트워크 오류 같은 문제는 예외처리가 필요함!!예외가 발생하는 상황 예시0 으로 나눌 때잘못된 메모리를 참조할 때오버플로우 등등...try-catch`try` 내부에서 예외가 발생하면 `catch`에게 예외 상황을 던져주고, 해당 예외 상황과 대응되는 `catch`가 이를 받아 예외 처리를 한다. static void Main(string[] args) { try { int a = 10; int b =..
람다식익명의 일회용 함수를 만드는데 사용하는 문법익명 함수가 필요한 이유 enum ItemType // 아이템 타입 { Weapon, Armor, Amulet, Ring } enum Rarity // 레어한 정도 { Normal, Uncommon, Rare, } class Item { public ItemType ItemType; public Rarity Rarity; } static Item FindWeapon() { foreach (Item item in _items) { ..