반응형

[Unity] 109

[C#] 비동기 메서드(async, await)

: async 키워드를 사용하며, 매개 변수에 out, ref같은 한정자는 사용할 수 없습니다.(일부 비동기 메서드는 호출 측으로 반환되지 않아서 참조를 통한 매개변수 전달을 허용하지 않음) static void Main(string[] args) { Task task = DemoCompletedAsync(); // -> 비동기 메서드 호출 Console.WriteLine("Method return"); task.Wait(); // -> 작업이 완료될 때까지 중단 Console.WriteLine("Task completed"); } static async Task DemoCompletedAsync() { Console.WriteLine("first await start : "); await Task.Fr..

[Unity]/[C#] 2022.09.21

[C#] ConditionalAttribute

: C# 컴파일러가 해석하는 전처리 지시문입니다. ConditionalAttribute의 별칭이고, 메서드 또는 특성 클래스에 적용합니다. void 메서드에만 적용 가능하고, 일부 문장에 대해서만 제약할 수는 없고 해당 메서드 전체에 적용됩니다. #if ~ #endif 로 감싸는 것보다 코드가 깔끔하고, 더 분명하고 정교해서 오류 가능성이 적어집니다. //사용 예시 [Conditional("RELEASE"), Conditional("DEBUG")] void method() { } * RELEASE : 출시 모드일 때 메서드 사용. * DEBUG : 디버그 빌드의 추적 및 로깅 기능을 사용하도록 설정. 이외의 추가적인 키워드는 ProjectSettings - Player - Other Settings - ..

[Unity]/[C#] 2022.09.20

[C#] MethodImpl (feat.인라인 함수)

: 메서드의 구현 방법을 자세히 지정해줍니다. using System.Runtime.CompilerServices; [MethodImpl(MethodImplOptions.AggressiveInlining)] void method() { } AggressiveInlining : 가능하면 인라인. NoInlining : 컴파일러가 런터임에 인라인되지 않도록 적용. Synchronized : 동기화. 한번에 한 쓰레드에서만. 그 외의 키워드는 아래 링크를 참고하시길 바랍니다. https://docs.microsoft.com/ko-kr/dotnet/api/system.runtime.compilerservices.methodimploptions?view=net-6.0 : 함수 코드가 호출자에게 롤링되는 컴파일러 ..

[Unity]/[C#] 2022.09.19

[C#] internal 액세스 한정자

internal 액세스 한정자 : 구성 요소 그룹이 나머지 코드에 노출되지 않고 비공개 방식으로 상호 작용합니다. 구성 요소 기반 개발에 사용되고, 프레임 워크를 사용하는 코드에 노출되지 않습니다. public class의 경우 누구나 해당 dll 클래스를 상속받아 별도의 변형된 2차 래퍼클래스로 작성 가능하기 때문에 그런 경우를 방지하기 위해 internal로 작성하고, 어셈블리 내부에서 자유롭게 사용하기 위한 용도로 많이 쓰입니다. 주로 프레임워크, 공통 컨트롤 개발자, 서드파티 컴포넌트 등에서 사용합니다. 예제 internal class BaseClass { public static int intM = 0; } class TestAccess { static void Main() { //interna..

[Unity]/[C#] 2022.09.18

[C#] 물음표 연산자 3종류(feat. '?.', '??', '?')

a?.b - a가 null일 경우 null을 리턴하고, null이 아닐 경우 b를 이어서 읽음. ?? - null 병합 연산자. 왼쪽 피연산자가 null일 경우 오른쪽 피연산자 결과를 반환함. A ? B : C - A가 참이면 B를, 거짓이면 C를 리턴함. return this?.ContainsIndex(index) ?? false ? thiz[index] : default; 다음과 같은 예시 코드가 있을 때, this가 null일 경우 -> false -> default this가 null이 아닐 경우 -> .ContainsIndex(index) .ContainsIndex(index)가 null일 경우 -> default .ContainsIndex(index)가 null이 아닐 경우 -> this[in..

[Unity]/[C#] 2022.09.17

[C#] try-catch 예외처리

try-catch 예외처리는 프로그램에서 의도치 않은 오류가 발생했을 때 오류를 처리해줍니다. try : 실행하고자 하는 코드 catch : 에러또는 예외가 발생했을 때 finally : 리소스 해제 등의 후처리를 해줍니다. try문이 실행되다가 예외가 발생하면 try문의 나머지 부분을 읽지 않고 바로 catch문으로 넘어가게 됩니다. try { //실행하고자 하는 코드 Console.WriteLine("try"); } catch(Exception ex) { Console.WriteLine("catch"); return ex.Message; } finally { Console.WriteLine("finally"); } -> 정상 종료(예외 발생 x) 시 출력 : try finally -> 예외가 발생했을..

[Unity]/[C#] 2022.09.16

[C#] string 출력 방법(feat. Console.Write)

1. 그냥 직접 출력 2. Format()으로 출력 3. 문자열 보간으로 출력 1. 그냥 직접 출력 Console.Write는 string을 그냥 출력하고, Console.WriteLine은 출력한 다음 줄바꾸기를 해줍니다. Console.Write("한글자"); Console.Write("두글자"); Console.WriteLine("한줄"); Console.WriteLine("두줄"); 2. Format()으로 출력 Format() 메서드를 이용해 출력하는 방법은 아래와 같이 중괄호 안에 숫자를 넣고, 콤마를 찍고 변수나 서식을 넣어주는 방법입니다. for (int feet = 1; feet

[Unity]/[C#] 2022.06.02

[C#] 오버라이딩과 오버로딩

오버라이딩(Overriding) : 상위 클래스의 메서드를 하위 클래스가 재정의해서 사용하는 것. 오버로딩(Overloading) : 같은 메서드 이름으로 매개변수에 차이를 두는 것. * 예시) 1) 오버라이딩 abstract public class Parent { public string name; public int attack; abstract public void InputInfo(); } class Children : Parent { override public void InputInfo() { name = "jj"; attack = 10; } } class Call { static void Main(string[] args) { Children ch = new Children(); ch.Inp..

[Unity]/[C#] 2022.05.22

[C#] delegate와 event의 차이

1. delegate 2. event 3. delegate와 event의 차이점 1. delegate : delegate는 하나의 형식(type)으로, 메서드에 대한 참조입니다. delegate는 인스턴스 메서드, 정적메서드 모두 참조 가능합니다. delegate는 값이 아닌 '코드' 자체를 넘기고 싶을 때 사용할 수 있고, 사용 예시는 아래와 같습니다. delegate int Compare(int number1, int number2); static int AscendCompare(int number1, int number2) { if (number1 > number2) return 1; else if (number1 == number2) return 0; else return -1; } static ..

[Unity]/[C#] 2022.05.18
반응형