C#25 2. yield return 에 대해 (내부 동작) 이전 글에서 yield return 을 사용하면 함수 실행을 중간에 멈췄다가 다시 실행할 수 있다는 것을 배웠습니다. 그렇다면, C# 은 어떻게 이를 가능하게 할까요? 이번 글에서는 yield return 이 내부적으로 어떻게 동작하는지 알아보겠습니다. yield return 이 포함된 함수는 컴파일 단계에서 변환된다yield return 을 포함한 함수는 일반적인 함수처럼 작동하는 것이 아니라, 컴파일러에 의해 특별한 클래스로 변환됩니다. 즉, C# 컴파일러는 해당 함수를 IEnumerator 인터페이스를 구현하는 클래스로 변환하여 실행 흐름을 제어합니다. 예를 들어, 다음 코드를 보겠습니다:IEnumerator MyCoroutine(){ Console.WriteLine("Step 1"); .. 2025. 3. 9. 1. yield return 에 대해 (개념) 이번 시리즈에서는 C# 의 yield return 에 대해 자세히 소개하려고 합니다.처음 접하는 분들도 차근차근 이해할 수 있도록 예제를 중심으로 풀어갈 예정입니다.그럼 첫 번째 이야기부터 시작해 보겠습니다. 일반적인 함수는 중간에 멈출 수 없다일반적인 함수는 실행 중에 빠져나갔다가 다시 돌아올 수 없습니다.예를 들어, 아래 코드를 보면 ...void MyFunc(){ Console.WriteLine(1); Console.WriteLine(2); Console.WriteLine(3);} 이 함수는 한 번 실행되면 끝까지 실행되며, 중간에 멈출 방법이 없습니다. 즉, 1을 출력하고 멈추고 싶어도 그럴 수 없으며, 무조건 2, 3까지 실행됩니다. yield return 을 사용하면 중간에.. 2025. 3. 9. Action 과 Func 의 형변환 살펴보기 C# 에서 대리자는 특정 메서드를 참조하는 기능을 제공하는 중요한 개념입니다. 이번 글에서는 대리자의 형변환과 람다 표현식을 활용하여 다양한 방식으로 사용할 수 있는 방법을 정리해보겠습니다. 대리자의 형변환Action 대리자는 반환값이 없으므로, 람다 형식으로 Console.WriteLine()을 호출할 수 있습니다. 그러나 형변환을 적용하려면 적절한 괄호 사용이 필요합니다.((Action)(() => Console.WriteLine("Hello")))(); 위 코드는 괄호가 너무 많아 하나씩 쪼개서 살펴보겠습니다. WriteLine() 으로 출력하는 부분입니다.() => Console.WriteLine("Hello") 는 람다 표현식을 사용하여 Console.WriteLine()을 호출하는 함수입니다.. 2025. 3. 8. => (람다 연산자) 이해하기 C++을 사용하던 개발자라면 C#의 => 연산자를 처음 접했을 때 낯설고 혼란스러울 수 있습니다. 하지만 C#에서는 이 연산자가 매우 다양한 곳에서 사용되며, 코드의 가독성과 간결함을 높이는 데 중요한 역할을 합니다. 이 글에서는 => 연산자가 사용되는 대표적인 형태와 그 의미를 쉽게 설명합니다. 다양한 위치에서 사용되는 => 연산자=> 연산자는 람다 표현식이나 대리자 선언 등에서 자주 사용됩니다.Func square = x => x * x;Action greet = () => Console.WriteLine("Hello!");첫 번째 줄은 x라는 입력값을 받아 x * x를 반환하는 람다 함수입니다. 두 번째 줄은 인자 없이 "Hello!"를 출력하는 동작을 정의한 Action입니다. 기존 코드와의 .. 2025. 3. 8. 제네릭 (Generic) <T> 에 대해서 제네릭은 어떤 자료형이라도 범용적으로 사용할 수 있도록 돕는 기능입니다.처음 보면 이해하기 어려울 수 있지만, 차근차근 풀어보겠습니다. 제네릭 클래스class MyClass { T value;} 제네릭은 로 선언됩니다. 여기서 T에 현혹될 필요 없습니다.MyClass 는 "이제부터 MyClass 내부에서 제네릭을 사용할 것이다."라는 의미입니다.그리고 제네릭 타입을 T라고 쓰면 MyClass 가 되고, U로 쓰면 MyClass 가 됩니다. class MyClass { IamGeneric value;} 이처럼 안의 타입명을 자유롭게 지정할 수 있습니다.보통 T는 Type의 약자로 사용되며, 관례적으로 많이 쓰이는 명칭입니다. 제네릭 함수함수에서도 제네릭을 사용할 수 있습니다. 이번에는 T.. 2025. 3. 5. C# 에서 ? (nullable) 의 의미와 활용 방법 C# 에서 ? 는 변수가 null을 가질 수 있는 타입임을 선언하는 기호입니다. ? ( nullable ) 선언string text1 = null;string? text2 = null; 두 변수 모두 null이지만,text1.ToString() 을 호출하면 실행 중 null 값 참조 오류를 발생시킵니다.text1 은 null 이므로 현재 아무것도 가리키고 있지 않습니다.아무것도 가리키지 않는 변수에 .ToString() 으로 접근하려 하면 실행 중 오류가 발생합니다. 이 상황을 말로 풀어쓰면,아무 생각이 없는 사람에게 "점심으로 뭘 먹을까요?" 라고 묻는 것과 같습니다.애초에 아무 생각이 없는데, 그 사람에게 무슨 생각을 물어본다는 것 자체가 오류인 것입니다. 반면, text2 는 "이 변수는 null.. 2025. 3. 5. 이전 1 2 3 4 5 다음