[C#] 람다식
·
Game Programming/C#
람다식이란? 람다식은 익명 함수(anonymous function)를 정의하는 구문입니다.간단히 말하자면 이름이 없는 함수로, 코드를 더 간결하고 읽기 쉽게 만들어주는 장점을 가지고 있습니다.  람다식은 매개변수 목록과 식 또는 문 블록으로 구성되며, LINQ 쿼리, 델리게이트(delegate), 이벤트(event) 처리 등에 자주 사용됩니다. 식 람다- 식이 본문으로 포함된 식 람다 형태입니다.(parameters) => expression 문 람다- 문 블록이 본문으로 포함된 문 람다 형태입니다.(parameters) => { statements1; statements2; }예제 : 람다식 사용 방법기본적으로 int 타입의 x, y를 전달받아 합을 출력하는 함수를 구현해보도록 하겠습니다..
[C#] 얕은 복사 vs 깊은 복사 (Shallow Copy vs Deep Copy)
·
Game Programming/C#
얕은 복사 (Shallow Copy)얕은 복사는 객체의 참조(주소값)만 복사하는 것을 의미합니다. 즉, A객체를 B객체에 복사하였을 때 B객체의 주소는 A객체의 주소와 동일하다는 의미입니다.class A{ public A(int x, int y) { this.x = x; this.y = y; } public int x; public int y;} 위와 같은 클래스가 있다고 가정하고, 얕은 복사로 복제해보도록 하겠습니다.A inst1 = new A(10, 10);A inst2 = inst1; inst1과 inst2는 같은 주소를 참조하게 되며, inst1의 멤버 변수의 값을 수정하면 inst2의 멤버 변수의 값 또한 동일한 값으로 수정되게 됩니다. 위..
[C#] 의존성 주입(DI, Dependency Injection)
·
Game Programming/C#
의존성 주입(DI, Dependency Injection)의존성 주입(DI)은 소프트웨어 설계 패턴 중 하나로, 객체지향 프로그래밍에서 객체 간의 의존성을 효율적으로 관리하기 위해 사용되며, 객체가 필요로 하는 의존 객체를 외부에서 제공(주입)하는 방식으로 객체 간의 결합도를 낮추는데 도움을 주는 설계 방법입니다. 클래스 간의 결합도를 낮춰 코드 변경 시 영향을 최소화 할 수 있습니다. 의존성한 객체가 다른 객체를 사용할 때 그 객체는 해당 객체에 의존하고 있다고 합니다.즉, 파라미터나 리턴값 또는 지역변수 등으로 다른 객체를 참조하는 것을 의미합니다.예를들어, 게임의 몬스터를 관리하는 클래스에서 Boss를 MainActor의 객체로 지정할지 SubActor의 객체로 지정할지 확정이 되지 않아서 계속 수..
[C#] as, is
·
Game Programming/C#
as / isas 키워드는 특정 객체가 주어진 형식으로 변환 가능한지를 안전하게 확인할 때 사용됩니다.주어진 객체를 지정된 형식으로 변환하려고 시도하며 변환에 실패하면 null을 반환합니다. is 키워드는 특정 객체가 주어진 형식과 호환되는지를 확인하는데 사용됩니다.주어진 객체가 호환이 되는 경우 true, 아닌 경우 false를 반환합니다. 다음과 같이 Character를 상속받는 Player, Monster 클래스가 있다고 가정해보도록 하겠습니다.class Character{ public Character(string name) { Name = name; } public string Name { get; set; } public void PrintName() ..
[C#] Delegate
·
Game Programming/C#
DelegateC#에서 Delegate는 C++의 함수 포인터와 비슷한 개념으로 메서드를 참조하는데 사용됩니다.delegate는 메서드의 형식을 정의하며, 특정 형식의 메서드에 대한 참조를 담을 수 있으며,이를 통해 메서드를 인자로 전달하거나, 이벤트 처리를 할 수 있는 기능을 제공합니다. Delegate의 특징메서드 참조 : delegate는 메서드를 가리킬 수 있으며, 메서드를 변수처럼 다룰 수 있습니다.멀티캐스트 : 하나의 delegate 인스턴스에 여러 메서드 추가가 가능합니다. (순차 호출)Delegate의 선언public delegate void PrintDelegate(string str); 위 코드에서 PrintDelegate는 string 인자를 받고 반환값이 없는 메서드를 참조할 수 있..
[C#] 가변 파라미터, 선택적 인수, 명명된 인수
·
Game Programming/C#
가변 파라미터가변 파라미터(Variadic Parameters)란 메서드에 전달되는 인수의 개수가 가변적일 수 있도록 허용하는 기능입니다.C#에서는 params 키워드를 사용하여 가변 파라미터를 선언할 수 있으며, 가변 파라미터는 배열 형태로 메서드에 전달됩니다. 즉, params 키워드를 사용하면 개수의 제한 없이 매개변수를 넘길 수 있다는 의미입니다. params 키워드를 사용하기 위해 몇가지 제한이 존재합니다.params 키워드는 메서드의 마지막 파라미터에만 사용할 수 있습니다.params 키워드는 단 하나의 파라미터에만 적용될 수 있습니다.params 파라미터는 배열 타입이어야 합니다.internal class Program{ static void Main(string[] args) {..
[C#] Null 조건 연산자
·
Game Programming/C#
Null 검사Null 체크는 프로그래밍에서 매우 중요한 작업으로, 매우 빈번하게 사용됩니다. 다음 예시를 보면class Test{ public string name = null;}internal class Program{ static void Main(string[] args) { Test test = new Test(); PrintName(test); } static void PrintName(Test test) { Console.WriteLine(test.name); }}PrintName() 함수에서 test의 name을 출력하는 부분이 있습니다.현재 test 객체의 name은 null값을 가지고 있으며, 접근하게 된다면 Nu..