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
๋ฐ์ํ