전체 글 89

클로저와 람다 표현식

클로저(Closure)람다 표현식에서 ()는 람다 식 자체가 매개 변수를 받지 않는다는 의미일 뿐, 람다 내부에서 사용하는 변수들이 반드시 람다 표현식의 매개 변수로 전달되어야 하는 것은 아닙니다.람다 내부에서는 외부에서 정의된 변수를 그대로 사용할 수 있습니다.이 때, 외부 변수를 캡처하여 사용하는 것을 **클로저(Closure)**라고 부릅니다. 즉, () => zombies.Remove(zombie) 이런 코드가 있다고 가정할 때,()는 람다 표현식 자체에 매개 변수가 없다는 의미입니다.그러나, 람다 표현식 내부에서는 외부의 zombie 변수를 사용하고 있습니다.이 zombie는 이미 람다 표현식 바깥에서 선언된 변수이며, 함수 호출에 필요한 매개 변수로 그대로 사용될 수 있습니다. Zombie z..

프로그래밍/C# 2024.10.19

delegate 표현 방식들

1. Delegate 타입을 사용한 기본적인 대리자(Delegate) 선언기본적으로, 대리자(Delegate)를 선언하고 함수를 대입하는 방식은 다음과 같습니다 delegate void MyDelegate();  // 대리자 선언void MyMethod()  // 대리자로 호출할 함수{    Console.WriteLine("MyMethod 호출됨");}MyDelegate delFunc = MyMethod;  // 대리자에 함수 대입delFunc();  // 호출: 출력 -> MyMethod 호출됨  여기서 **delegate void MyDelegate();**는 반환값이 없고 매개 변수가 없는 대리자를 선언하는 코드입니다.**MyDelegate delFunc = MyMethod;**는 이 대리자 타입..

프로그래밍/C# 2024.10.19

delegate 와 Action 그리고 Func

**Action**과 **Func**는 모두 **delegate(대리자)**의 일종입니다. Action과 Func는 .NET에서 미리 정의해 둔 제네릭 대리자(delegate) 타입으로, 각각 매개 변수가 있거나 없고, 반환값이 있는지 없는지에 따라 다양하게 사용할 수 있도록 제공되는 것입니다. delegate(대리자)란대리자는 함수를 참조할 수 있는 타입입니다.즉, 함수를 변수처럼 다룰 수 있도록 해주는 기능입니다. 함수를 대리자에 할당한 후, 대리자를 통해 함수를 호출할 수 있습니다.일반적으로 대리자는 사용자가 직접 정의해서 사용할 수 있지만, .NET에서는 이미 자주 사용되는 대리자를 편리하게 사용할 수 있도록 Action과 Func를 제공하고 있습니다. Action과 Func는 delegate의 ..

프로그래밍/C# 2024.10.19

클로저 (Closure)

클로저(Closure)클로저는 함수가 외부 범위에 있는 변수를 참조하고 기억하여 함수가 실행될 때마다 그 변수를 사용할 수 있는 개념입니다. 이 개념을 통해 람다 표현식이나 익명 함수가 외부 변수에 접근하여 그 상태를 유지하고, 나중에 함수를 호출할 때도 해당 변수를 사용할 수 있습니다. 클로저를 사용하는 코드 예시 버튼 클릭 시 클로저 사용다음 코드는 여러 개의 버튼이 있을 때, 각 버튼에 고유한 인덱스를 기반으로 다른 동작을 할당하는 방식입니다. 이때 클로저를 사용해, 각 버튼이 클릭될 때 해당 인덱스를 기억하고 올바르게 처리할 수 있도록 합니다.public class ButtonClosureExample : MonoBehaviour {     public Button[] buttons;     vo..

프로그래밍/C# 2024.10.19

RoundToInt()

RoundToInt()는 Unity에서 제공하는 함수로, 주어진 소수를 가장 가까운 정수로 반올림하는 함수입니다.이 함수는 Mathf 클래스에 속해 있으며, 실수 값을 입력으로 받아 정수로 변환합니다.기본적인 사용법은 다음과 같습니다:int result = Mathf.RoundToInt(2.7f);  // 결과: 3 int result2 = Mathf.RoundToInt(2.3f); // 결과: 2  주요 특징소수점 이하가 0.5 이상일 때는 해당 값을 올림 처리합니다.소수점 이하가 0.5 미만일 때는 내림 처리합니다.  예시 코드float value1 = 3.6f; float value2 = 3.3f; float value3 = 3.5f; int roundedValue1 = Mathf.RoundToIn..

퇴사 후 건강보험료는 또 어떻게 처리해야 하나?

국민 연금이야 납부 예외처리를 해서 안내도 그만이지만, 건보료는 안낼 방법이 없다.대한민국 국민으로서 의료 서비스를 저렴한 가격에 받고 있는 걸 생각하면 이건 그냥 내는 것이라고 생각하면 심플해진다.  이걸 어떻게든 줄이는 것이 목적이지만 이건 사람마다 처한 상황이 모두 다르기 때문에 각자 알아서 방법을 찾아야 한다. 공단에 전화해도 그 사람들도 알리가 없다.  일단 직장 가입자에서 지역 가입자로 전환되면 어떤 식으로든 변경되었다는 알림을 받는다. 그러면 관련 홈페이지나 앱에 들어가서 확인하면 되는데, 지역 가입자가되면 소득이 없어도 재산에 부과되기 때문에 내야 할 돈을 확인할 수 있다.  임의 가입 계속이란 만약, 퇴사 전 직장에서 내던 건보료가 더 적다면, 전환 후 2개월 이내에 '임의가입계속' 을 ..

일상 2024.10.16

프리다이빙 - AIDA2 자격증 발급 후 느낀 점.

안될 것만 같았던 AIDA 2 자격증을 발급받았다. (일단 축하 ㅎㅎ)     처음에는 혹 해서 신청했지만, 그 과정은 상품 광고에 있는 내용처럼 그렇게 쉽지는 않았다. ;;아마 대부분은 나와 비슷한 느낌을 받지 않을까 한다. 그래서 이제 막 자격증을 딴 프린이 입장에서 솔직한 생각을 적어보겠다.  광고에 혹하지 말자아이다2를 패키지로 신청하면 "이론 교육 1회 + 5미터 잠수풀 강습 2회 + 수심풀 강습 1회" 로 이뤄지는데 이것만 듣고 자격증을 따는 사람은 과장을 좀 보태서 아마도 전생에 물고기로 태어난 사람이 아닐까 한다.   보통은 기간 내에 자격증을 따기 위해서는 별도의 강습료를 내고 몇 번은 더 연습에 참가해야 한다. 나같은 경우는 6회 정도... 추가로 강습을 더 들은 것 같다. 여기서 사람..

운동 & 취미 2024.10.15

Lazy<T> 에 대한 조금 더 깊이있는 이해

Lazy의 기본 구조**Lazy**는 C#의 제네릭 클래스이며, 내부적으로 객체가 실제로 필요할 때만 생성되도록 설계되어 있습니다.Lazy의 핵심은 Value 프로퍼티에 있으며, 이 프로퍼티가 호출되기 전까지는 객체가 생성되지 않습니다.  Lazy의 내부 동작 원리Lazy는 내부적으로 람다 표현식을 딜레이(지연) 시켜서 나중에 실행되도록 처리합니다. 즉, Lazy 생성자에서 전달된 객체 생성 로직(람다 표현식)이 즉시 실행되지 않고 저장만 되며, Value 프로퍼티가 처음 호출될 때까지 대기하게 됩니다. Lazy 생성 시:람다 표현식을 전달받습니다. 이 표현식은 객체를 어떻게 생성할지에 대한 정보만 저장하고, 즉시 실행되지 않습니다. Value 프로퍼티에 처음 접근할 때:Value 프로퍼티는 내부적으로 ..

프로그래밍/C# 2024.10.14

Lazy<T>

Lazy는 .NET에서 제공하는 제네릭 클래스 중 하나로, 특정 객체를 필요할 때까지 생성하지 않고 미루는 "지연 초기화" (Lazy Initialization)를 지원하는 클래스입니다. 즉, 실제로 객체가 필요할 때 처음 한 번만 생성하고 그 이후에는 이미 생성된 객체를 사용하게 하는 방식입니다. Lazy의 주요 특징지연 초기화: 객체 생성이 반드시 필요할 때까지 미루기 때문에 성능 최적화가 가능합니다. 스레드 안전성:Lazy는 기본적으로 스레드 안전하게 작동하여, 여러 스레드에서 동시에 접근하더라도 객체가 한 번만 생성됩니다. 싱글톤 구현에 유용:한 번만 생성되어야 하는 객체를 효율적으로 관리할 수 있습니다.  Lazy 사용 방법public class MyClass {     // Lazy를 사용하여..

프로그래밍/C# 2024.10.14

싱글톤 (Singleton)

싱글톤(Singleton) 패턴은 특정 클래스의 인스턴스가 하나만 생성되도록 보장하는 디자인 패턴입니다.주로 애플리케이션 전역에서 하나의 객체만 필요할 때 사용됩니다.예를 들어, 설정 관리 클래스, 로그 관리 클래스 등에 사용될 수 있습니다. C#에서 싱글톤 패턴을 구현하는 방법은 여러 가지가 있지만, 가장 일반적인 구현 방법을 예시로 설명해 드리겠습니다. 기본적인 싱글톤 구현public class Singleton {     // 유일한 인스턴스를 저장하는 정적 필드     private static Singleton instance = null;     // 인스턴스에 접근하는 정적 프로퍼티     public static Singleton Instance     {         get       ..

프로그래밍/C# 2024.10.14