[c#] C# 이터레이터와 이벤트 처리
C#은 강력한 기능을 가진 다양한 기능을 제공하여 사용자가 효율적으로 작업을 수행할 수 있도록 지원합니다. 이번 글에서는 C#에서 이터레이터(iterator)와 이벤트(event) 처리에 대해 알아보겠습니다.
이터레이터(iterator)란?
이터레이터는 연속적인 데이터 집합을 반복하거나 순회(iterate)하기 위한 기능을 제공합니다. C#에서는 yield
키워드를 사용하여 간단하게 이터레이터를 작성할 수 있습니다.
다음은 간단한 예제 코드입니다.
using System;
using System.Collections;
using System.Collections.Generic;
public class MyCollection : IEnumerable<int>
{
private List<int> data = new List<int>();
public void Add(int item)
{
data.Add(item);
}
public IEnumerator<int> GetEnumerator()
{
foreach (int item in data)
{
yield return item;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
class Program
{
static void Main()
{
MyCollection collection = new MyCollection();
collection.Add(1);
collection.Add(2);
collection.Add(3);
foreach (int item in collection)
{
Console.WriteLine(item);
}
}
}
MyCollection
클래스는 IEnumerable<int>
인터페이스를 구현하고, GetEnumerator
메서드를 이용하여 각 요소를 순회할 수 있는 이터레이터를 제공합니다.
이벤트(event) 처리
C#에서 이벤트는 미리 정의된 행동(예: 버튼 클릭, 마우스 움직임 등)이 발생했을 때 처리하는 데 사용됩니다. 이벤트 처리를 위해 사용자 지정 이벤트를 정의하고, 그 이벤트를 발생시키는 방법을 제공합니다.
다음은 간단한 예제 코드입니다.
using System;
public class EventPublisher
{
public event EventHandler CustomEvent;
public void DoSomething()
{
// 작업 수행 후 이벤트 발생
OnCustomEvent();
}
protected virtual void OnCustomEvent()
{
CustomEvent?.Invoke(this, EventArgs.Empty);
}
}
public class EventSubscriber
{
public EventSubscriber(EventPublisher publisher)
{
publisher.CustomEvent += Publisher_CustomEvent;
}
private void Publisher_CustomEvent(object sender, EventArgs e)
{
Console.WriteLine("Custom event occurred");
}
}
class Program
{
static void Main()
{
EventPublisher publisher = new EventPublisher();
EventSubscriber subscriber = new EventSubscriber(publisher);
publisher.DoSomething();
}
}
EventPublisher
클래스는 CustomEvent
라는 사용자 정의 이벤트를 정의하고, DoSomething
메서드를 통해 이벤트를 발생시킵니다. EventSubscriber
클래스는 이벤트를 구독하고, 발생시에 콜백 메서드가 실행됩니다.
C#의 이터레이터와 이벤트 처리를 효과적으로 활용하여 코드를 구조화하고, 응용 프로그램의 성능을 향상시킬 수 있습니다.
참고: