Rainbow๐ŸŒˆCoder 2022. 2. 25. 15:44
728x90

์ธ๋ฑ์„œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐ์ฒด ๋‚ด์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ํ”„๋กœํผํ‹ฐ์ด๋‹ค.

๊ฐ์ฒด๋ฅผ ๋งˆ์น˜ ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.


<์ธ๋ฑ์„œ ์„ ์–ธ ํ˜•์‹>

class ํด๋ž˜์Šค์ด๋ฆ„

{

     ํ•œ์ •์ž ์ธ๋ฑ์„œํ˜•์‹ this[ํ˜•์‹ index] //์ธ๋ฑ์Šค์˜ ์‹๋ณ„์ž๊ฐ€ ๊ผญ index์ผ ํ•„์š”์—†๋‹ค. ์ทจํ–ฅ๊ป ์กฐ์ ˆ!

     {

          get{ //index๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜}

          set{ //index๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ ์ €์žฅ}

     }

}


 

์ธ๋ฑ์„œ๋Š” ํ”„๋กœํผํ‹ฐ์ฒ˜๋Ÿผ ์‹๋ณ„์ž๋ฅผ ๋”ฐ๋กœ ๊ฐ€์ง€์ง€ ์•Š๋Š”๋‹ค!

ํ”„๋กœํผํ‹ฐ๋Š” ๊ฐ์ฒด ๋‚ด์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ํ†ต๋กœ์ธ๋ฐ,

ํ”„๋กœํผํ‹ฐ๊ฐ€ ์ด๋ฆ„์„ ํ†ตํ•ด ๊ฐ์ฒด ๋‚ด์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ฒŒ ํ•ด์ค€๋‹ค๋ฉด, 

์ธ๋ฑ์„œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด ๋‚ด์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.

 

์ธ๋ฑ์„œ์˜ ์„ ์–ธ ์˜ˆ

MyList๋Š” ๋‚ด๋ถ€์— ์ •์ˆ˜ ํ˜•์‹ ๋ฐฐ์—ด์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ ,

์ธ๋ฑ์„œ๋ฅผ ํ†ตํ•ด ์ด ๋ฐฐ์—ด์— ์ ‘๊ทผํ•œ๋‹ค.

์ธ๋ฑ์„œ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ ์ž ํ•˜๋Š” ์‹œ๋„๊ฐ€ ์ด๋ฃจ์–ด์งˆ ๋•Œ ์ง€์ •ํ•œ ์ธ๋ฑ์Šค๋ณด๋‹ค

๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘๋‹ค๋ฉด ์ธ๋ฑ์Šค์— ๋งž์ถฐ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์žฌ์กฐ์ •ํ•œ๋‹ค.

    class MainApp
    {
        class MyList
        {
            private int[] array;
            public MyList()
            {
                array = new int[3];
            }
            public int this[int index]
            {
                get { return array[index]; }
                set 
                {
                    if (index >= array.Length)
                    {
                        Array.Resize<int>(ref array, index + 1);
                        Console.WriteLine($"Array Resize : {array.Length}");
                    }
                    array[index] = value;
                 }
            }
            public int Length
            {
                get { return array.Length; }
            }
        }
        static void Main(string[] args)
        {
            MyList list = new MyList();
            for (int i = 0; i <5; i++)
                list[i] = i;
            for (int i = 0; i < list.Length; i++)
                Console.WriteLine(list[i]);
        }
    }

<์˜ˆ์ œ>

using System;
using System.Collections;

namespace Indexer
{
    class MyList
    {
        private int[] array;
        public MyList()
        {
            array = new int[3];
        }
        public int this[int index]
        {
            get { return array[index]; }
            set
            {
                if(index >= array.Length)
                {
                    Array.Resize<int>(ref array, index + 1);
                    Console.WriteLine($"Array Resized !!! : {array.Length}");
                }
                array[index] = value;
            }
        }
        public int Length
        {
            get { return array.Length; }
        }
    }
    class MainApp
    {
        static void Main(string[] args)
        {
            MyList list = new MyList();
            for (int i = 1; i <= 10; i++)
                list[i-1] = i; //qo์—ด์„ ๋‹ค๋ฃจ๋“ฏ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค
            for (int i = 0; i < list.Length; i++)
                Console.WriteLine(list[i]);
        }
    }
}

<์ถœ๋ ฅ ๊ฒฐ๊ณผ>

Array Resized !!! : 4
Array Resized !!! : 5
Array Resized !!! : 6
Array Resized !!! : 7
Array Resized !!! : 8
Array Resized !!! : 9
Array Resized !!! : 10
1
2
3
4
5
6
7
8
9
10

 

728x90