๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90

 

 

 

 

 

์ธ๋ฑ์„œ (Indexer)

๊ฐ์ฒด ๋‚ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ์ผ์ข…์˜ ํ”„๋กœํผํ‹ฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

๊ฐ์ฒด๋ฅผ ๋งˆ์น˜ ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ํŠน์ง•์ด๋‹ค. ์ธ๋ฑ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธํ•œ๋‹ค.

class ํด๋ž˜์Šค์ด๋ฆ„
{
    ํ•œ์ •์ž ์ธ๋ฑ์„œํ˜•์‹ this[ํ˜•์‹ index]
    {
        get
        {
            // index๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜
        }
        
        set
        {
            // index๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ ์ €์žฅ
        }
    }
}

 

์ธ๋ฑ์„œ๋Š” ๋ณ„๋‹ค๋ฅธ ์‹๋ณ„์ž๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๋Š”๋‹ค.

ํ•„์š”ํ•œ ๊ฒƒ์€ ์˜ค๋กœ์ง€ ์ธ๋ฑ์Šค ๋ฟ์ด๋ฉฐ ์ด๊ฒƒ์„ ํ†ตํ•ด ๊ฐ์ฒด ๋‚ด์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

 

 

์ธ๋ฑ์„œ ์‚ฌ์šฉ ์˜ˆ์ œ

class ItemList
{
    private int[] itemList;
    
    public ItemList()
    {
        itemList = new int[10];
    }
    
    public int this[int index]     // ์ธ๋ฑ์„œ
    {
        get
        {
            return itemList[index];
        }
        
        set
        {
            if (index >= itemList.Length)
            {
                Array.Resize<int>(ref itemList, index + 1);
                Console.WriteLine("Array Resized : {0}", itemList.Length);
            }
            
            itemList[index] = value;
        }
    }
}

 

์œ„์™€ ๊ฐ™์ด ์„ ์–ธ์„ ํ–ˆ๋‹ค๋ฉด, ์ด์ œ ItemList ๊ฐ์ฒด๋ฅผ ์ธ๋ฑ์‹ฑํ•˜์—ฌ ๋‚ด๋ถ€์— ์žˆ๋Š” itemList ๋ฐฐ์—ด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์‹œ๋ฅผ ๋ณด์ž.

ItemList list = new ItemList();

for(int i = 0; i < 10; i++)
{
    list[i] = i;
}

for (int i = 0; i < 10; i++)
{
    Console.WriteLine(list[i]);
}

 

 

 

 

 

 

  • ์ด ๊ธ€์€ <์ด๊ฒƒ์ด C#์ด๋‹ค> ์ฑ…์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ณต๋ถ€ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.
728x90
๋ฐ˜์‘ํ˜•