https://www.youtube.com/watch?v=IuCfuPRe6Rk&list=PLO56HZSjrPTB4NxAsEP8HRk6YKBDLbp7m&index=62
using System;
using static System.Console;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
namespace testProject
{
class Car
{
// 필드
private string[] names;
// 매개변수가 있는 생성자
public Car(int length)
{
names = new string[length];
}
// 인덱서
public string this[int index]
{
get { return names[index]; }
set { names[index] = value; }
}
// 반복기
public IEnumerator GetEnumerator()
{
for(int i = 0; i < names.Length; i++)
{
yield return names[i];
}
}
}
class Program
{
static void Main()
{
// 인스턴스 생성
Car cars = new Car(3);
// 인덱서
cars[0] = "레이";
cars[1] = "제네시스";
cars[2] = "k3";
// 반복기
// yield는 생산하다라는 뜻과 함께 양보하다라는 뜻도 가지고 있습니다
// 즉, yield를 사용하면 값을 함수 바깥으로 전달하면서 코드 실행을 함수 바깥에 양보
foreach (var car in cars)
{
WriteLine(car);
}
}
}
}