C#교과서 마스터하기 28. 인덱서와 반복기

https://www.youtube.com/watch?v=IuCfuPRe6Rk&list=PLO56HZSjrPTB4NxAsEP8HRk6YKBDLbp7m&index=62

1. 인덱서와 반복기

01. 인덱서(Indexer)

  • 클래스의 인스턴스를 배열처럼 사용할 수 있도록 해주는 구문
  • 개체를 배열 형식으로 표현하고자 할 때 사용
    • 속성의 배열형
  • 배열의 인덱스 접근방식인 개체명[0], 개체명[1] 식으로 개체의 속성(Property)에 접근
  • 자동차 개체를 예를 든다면 자동차 카탈로그(광고지)와 같이 자동차에 대한 인덱스(목차)를 표현하는 방법과 같은 의미
  • 인덱서는 똑똑한 배열이라고도 함
    • 오버로드 가능
  • 인덱스와 배열의 차이

02. 반복기(Iterator)

  • 컬렉션의 항목을 단계별로 실행하는데 사용되는 구문

2. 프로젝트

  • yield는 생산하다라는 뜻과 함께 양보하다라는 뜻도 가지고 있습니다
  • 즉, yield를 사용하면 값을 함수 바깥으로 전달하면서 코드 실행을 함수 바깥에 양보
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);
            }
        }

    }
}

좋은 웹페이지 즐겨찾기