์ธ๋ฑ์๋ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํด์ ๊ฐ์ฒด ๋ด์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ฒ ํด์ฃผ๋ ํ๋กํผํฐ์ด๋ค.
๊ฐ์ฒด๋ฅผ ๋ง์น ๋ฐฐ์ด์ฒ๋ผ ์ฌ์ฉํ๊ฒ ํด์ค๋ค.
<์ธ๋ฑ์ ์ ์ธ ํ์>
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
'C# > ์ด๊ฒ์ด C#์ด๋ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
56. ์ผ๋ฐํํ ๋, ํ์ ๋งค๊ฐ๋ณ์ ์ ์ฝ์ํค๊ธฐ (0) | 2022.02.28 |
---|---|
55. foreach๊ฐ ๊ฐ๋ฅํ ๊ฐ์ฒด ๋ง๋ค๊ธฐ (0) | 2022.02.27 |
53. ์ปฌ๋ ์ (ArrayList, Queue, Stack, Hashtable) (0) | 2022.02.25 |
52. ๊ฐ๋ณ๋ฐฐ์ด (0) | 2022.02.25 |
51. ๋ค์ฐจ์๋ฐฐ์ด (0) | 2022.02.25 |