GetUnderLyingType은 지정된 nullable 형식의 내부 형식을 리턴해주는 것이다.
Type type = Nullable.GetUnderlyingType(typeof(int)); //Value Type(x) -> null type = Nullable.GetUnderlyingType(typeof(int?)); //Ref Type(O) -> 자료형
try는 오류가 발생하는 구문을 호출시켜 catch에서 해당 오류를 받아줄 수 있게 한다.
try { character.Load(); }
catch는 오류가 발생하면 실행되는 구문으로 원하는 오류 메시지를 호출시켜준다.
catch (CharacterObjectNullReferenceException e) { print(e.Message); print("캐릭터 로딩 필요"); } catch(IOException e) { print(e.Message); print("캐릭터 파일 탐색 필요"); }
finally는 오류에 상관없이 마지막에 반드시 호출되는 구문이다.
finally { print("예외 처리 완료"); }
Exception은 예외라는 뜻으로 예외 처리를 할 때 해당 함수를 상속받는다. Exception은 예외 클래스들의 조상으로 모든 예외를 해당 형식으로 받을 수 있다.
when은 뒤에 조건문을 달아 해당 조건을 만족하면 해당 함수를 호출시킨다.
try { character.Load(); } catch (CharacterObjectNullReferenceException e) when(e.Code == 100) { print(e.Message); print("캐릭터 로딩 필요 = 100"); }
Action은 Generic Deligate로 Action 뒤에 원하는 형을 넣어 해당 형을 가진 함수를 호출할 수 있게 해주는 것이다. 해당 형은 총 16개까지 사용할 수 있다.
private Action<string, Color> action; public void TestAction(string str, Color color) { print($"TestAction : {str}, {color}"); } private void Start() { action = TestAction; action?.Invoke(); }
Func는 Action과 비슷하지만 마지막에 return 해주는 형을 추가로 적어 중어야 한다. Func도 Action과 마찬가지로 16개의 형을 사용할 수 있다.
private string Func<int, Vector3, string> func; private string TestFunc(int value, Vector3 vec) { return $"{value} / {vec}"; } private void Start(0 { func = TestFunc; string str = func?.Invoke(10, new Vector3(1,2,3); print(str) }
Predicate는 하나의 형만 불러주고 무조건 bool로 리턴해주는 Delegate이다. 값 검증하는 것을 연결할 때 주로 사용한다. predicate는 무조건 bool을 리턴해주어야 하기 때문에 Nullable을 사용하면 안 된다.
private Predicate<int> predicate; private bool Validate(int value) { return value<10; } private Start() { predicate = Validate; bool bCheck = predicate.Invoke(5); print(bCheck); }
Bubble Sort는 버블 정렬로 맨 처음부터 오른쪽에 있는 숫자와 비교하여 왼쪽 숫자가 더 크면 두 숫자를 바꾸는 것이다. 이를 숫자의 총개수만큼 반복하여 정렬을 해준다.