전체 글 89

static 선언

C#에서 `static` 키워드는 클래스나 클래스 멤버(필드, 메서드 등)에 사용되며, 해당 멤버나 클래스가 객체 인스턴스에 속하지 않도록 선언할 때 사용합니다. 즉, 클래스 자체에 속하게 되어 모든 인스턴스에서 공유됩니다. 아래는 `static`의 주요 특징과 예시입니다.  정적 클래스 (Static Class)* 클래스 자체가 정적일 경우, 그 클래스는 인스턴스화 할 수 없습니다. * 모든 멤버가 자동으로 정적이 됩니다. public static class MathUtility {     public static int Add(int a, int b)     {         return a + b;     } } MathUtility 클래스는 인스턴스화가 불가능하며, `Add` 메서드는 다음과 같이..

프로그래밍/C# 2024.10.13

event 그리고 delegate, Action

C#에서는 메서드를 참조하고 호출하는 다양한 방식이 존재합니다. 그중에서도 delegate, Action, 그리고 event는 자주 사용되는 대표적인 기능들입니다. 이 세 가지를 한 번에 비교하여 각 개념의 역할과 사용 방법을 이해해봅시다. 사실 이 3가지를 비교한다는 말은 좀 어거지다. 다만, 처음보면 다소 헤깔리기 때문에 같이 놓고 어떤 식으로 쓰이는지 알아보는 정도로 이해하면 좋겠다. Delegate정의: delegate는 특정 메서드를 참조할 수 있는 사용자 정의 타입으로, C++의 함수 포인터와 유사한 기능을 제공합니다. 여러 메서드를 한 번에 호출하거나, 메서드를 콜백 형태로 전달할 때 유용합니다. 사용 방법: 직접 특정 시그니처를 정의하여, 그와 같은 매개변수와 리턴 타입을 가진 메서드를 참..

프로그래밍/C# 2024.10.12

Action

유니티에서 Action 사용하기유니티에서 Action은 C#에서 기본 제공하는 제네릭 delegate 타입으로, 주로 콜백 함수를 전달할 때 사용됩니다. Action은 리턴값이 없고, 간단히 여러 작업을 한 곳에 모아놓고 특정 상황에서 호출하는 데 유용합니다. 코드의 가독성을 높이고 간결하게 유지하기 위해 많이 사용됩니다. Action을 사용하는 경우이벤트 기반 작업: 특정 이벤트가 발생했을 때 여러 작업을 한 번에 처리하고 싶을 때. 버튼 클릭 등 UI 작업: 버튼 클릭 시 여러 작업을 연결해 처리하고 싶을 때. 비동기 작업 후속 처리: 비동기 작업이 끝난 후 후속 작업을 등록하고 처리할 때. 예시: 플레이어가 적과 충돌했을 때 여러 작업을 처리하는 경우using System;using UnityEng..

프로그래밍/C# 2024.10.12

Callback

콜백 함수와 직접 호출 방식의 차이콜백 함수는 특정 작업이 완료된 후 다른 작업을 실행하기 위해 미리 등록된 함수를 호출하는 방식입니다.일반적으로 이벤트 기반 프로그래밍이나 비동기 작업에서 유용합니다.반면, 직접 호출 방식은 함수를 순차적으로 호출하는 방식으로, 코드를 단순하게 유지할 수 있지만 작업의 흐름이 고정적입니다. 예시 1: 콜백 없이 직접 호출하는 방식public class WithoutCallback : MonoBehaviour {     void Start()     {         Task1();         Task2();         Task3();     }     void Task1()     {         Debug.Log("Task 1 Complete");     } ..

프로그래밍/C# 2024.10.12

StartCoroutine

StartCoroutine()**은 코루틴을 유니티의 코루틴 스케줄러에 등록하는 함수입니다.이렇게 등록된 코루틴은 유니티의 업데이트 루프에 따라 실행되며, 지정된 작업을 프레임 단위로 처리하게 됩니다. 코루틴의 동작 방식코루틴은 프레임 단위로 실행되며, 유니티의 게임 루프에 맞춰 나눠서 실행됩니다.코루틴은 한 번에 모든 작업을 끝내지 않고, yield 키워드를 통해 중간에 멈추고 다시 실행을 재개할 수 있습니다.**StartCoroutine()**을 통해 코루틴을 스케줄러에 등록하면, 유니티는 매 프레임마다 해당 코루틴이 실행할 부분이 있는지 확인하고, yield에 따라 다시 재개할 시점을 결정합니다.  간단한 예시: 코루틴 스케줄링 public class CoroutineExample : MonoBeh..

event 와 delegate

이벤트 (Event)이벤트는 특정 작업이 발생했을 때 시스템이 알려주는 메커니즘입니다. 일반적으로 사용자 인터페이스에서 많이 사용되며, 사용자가 버튼을 클릭하거나 키보드를 누르는 등의 상호작용이 발생할 때 이벤트가 발생합니다. 이벤트는 델리게이트를 기반으로 구현되며, 특정 동작이 발생했을 때 연결된 메서드들을 실행하는 역할을 합니다. 이벤트의 구성 요소이벤트 선언이벤트는 클래스 내부에서 델리게이트 타입으로 선언됩니다. 이를 통해 특정 타입의 메서드를 등록할 수 있습니다.  이벤트 구독 및 해지이벤트에 메서드를 등록하여 특정 작업이 발생했을 때 실행될 동작을 정의합니다. 구독은 += 연산자를 사용해 메서드를 추가하며, -= 연산자를 사용해 등록된 메서드를 해제할 수 있습니다. 이벤트 발생특정 조건이 충족되..

프로그래밍/C# 2024.10.12

delegate

델리게이트 (delegate)C#에서 델리게이트는 특정 메서드를 가리키고 그 메서드를 나중에 호출할 수 있는 "포인터" 같은 역할을 합니다. 델리게이트를 사용하면 메서드를 매개변수로 전달하거나, 여러 메서드를 하나의 호출 리스트로 묶어 실행할 수 있습니다.특히 이벤트와 콜백(callback)과 같은 상황에서 많이 활용됩니다. 델리게이트의 기본 개념델리게이트는 특정한 형식의 메서드를 참조할 수 있는 타입입니다. 예를 들어, 반환 타입이 void이고 인자가 없는 메서드를 참조하는 델리게이트를 정의하려면 다음과 같이 작성합니다. public delegate void MyDelegate(); 다음은 델리게이트를 선언하고 사용하는 간단한 예시입니다  델리게이트의 사용 예델리게이트는 주로 콜백 메서드를 구현하거나,..

프로그래밍/C# 2024.10.12

Interface

C# Interface에 대한 설명C#에서 interface는 클래스나 구조체가 구현해야 하는 **계약(Contract)**과 같은 개념입니다. interface는 메서드, 속성, 이벤트 등의 형식을 정의하며, 실제로 그 기능을 어떻게 구현할지는 해당 interface를 구현하는 클래스나 구조체에서 결정합니다. 기본 개념interface는 구현이 아닌 형식을 정의합니다. 즉, 메서드나 속성의 이름, 반환 타입 등을 지정하고, 실제 구현 내용은 구현하는 클래스에서 작성합니다. 또한, interface는 클래스와 달리 다중 상속이 가능합니다. 클래스는 하나의 부모 클래스만 상속할 수 있지만, 여러 interface를 동시에 구현할 수 있어 유연하게 구조를 설계할 수 있습니다. 사용 이유표준화 :다양한 클래스..

프로그래밍/C# 2024.10.10

편집 도구는 어떤걸 선택해야 하나? (Visual Studio, Visual Studio Code)

Visual Studio와 Visual Studio Code의 차이점Visual Studio(비주얼 스튜디오)와 Visual Studio Code(비주얼 스튜디오 코드)는 이름은 비슷하지만, 목적과 기능에서 큰 차이가 있습니다. 둘 다 Microsoft에서 개발한 IDE(통합 개발 환경)이지만, 각각 다른 용도로 사용됩니다.  Visual Studio (비주얼 스튜디오)IDE (Integrated Development Environment)Visual Studio는 완전한 통합 개발 환경으로, 대규모 애플리케이션 개발에 적합합니다. 주요 사용 대상C#, C++, VB.NET 등 여러 언어를 사용한 Windows 및 .NET 관련 애플리케이션 개발에 주로 사용됩니다. 주요 기능고급 디버깅과 프로파일링 기능..

var 키워드

var는 C#에서 **암시적 형식(local type inference)**을 사용할 때 쓰는 키워드입니다.변수를 선언할 때 데이터 형식을 명시적으로 작성하지 않고, 컴파일러가 오른쪽 값(할당된 값)을 보고 형식을 자동으로 추론하는 방식입니다. var number = 10;       // int로 추론됨 var name = "Alice";    // string으로 추론됨 var list = new List(); // List으로 추론됨 주요 특징강한 형식 유지var를 사용해도 변수의 형식은 명확하게 결정됩니다. 할당된 값에 따라 형식이 결정되므로, 동적(dynamic)으로 변하는 것이 아닙니다. 가독성 향상타입이 긴 경우에 var를 사용하면 코드가 더 깔끔하고 가독성이 좋아질 수 있습니다. Dicti..

프로그래밍/C# 2024.10.08