Àε¦¼(Indexer)´Â Ŭ·¡½º ¶Ç´Â ±¸Á¶Ã¼ÀÇ °´Ã¼¸¦ ¹è¿°ú °°Àº ¹æ½ÄÀ¸·Î À妽º ÇÒ ¼ö ÀÖµµ·Ï ÇØÁִ Ŭ·¡½º ¸â¹öÀÔ´Ï´Ù. ±× ±¸Á¶´Â ¼Ó¼º(Property)°ú À¯»çÇÏ¿© get ¹× set Á¢±ÙÀÚ¸¦ »ç¿ëÇϰí ÀÖ½À´Ï´Ù. ±×¸®°í Àбâ, ¾²±âÀü¿ëÀ¸·Î set ¶Ç´Â get Á¢±ÙÀÚ¸¸À» Á¤ÀÇÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÇÏÀÚ¸¸ Å« Â÷ÀÌÁ¡Àº, Àε¦¼(Indexer)´Â °´Ã¼¸¦ À妽º(Index)Çϱâ À§ÇÑ index ÀÎÀÚ¸¦ °¡Áö¸ç, Ŭ·¡½º ÀÚü¸¦ ¹è¿Ã³·³ »ç¿ëÇϱ⠶§¹®¿¡ this Ű¿öµå°¡ À妽ºÀÇ À̸§À¸·Î »ç¿ëµË´Ï´Ù. ÀÌ·± À妽ºÀÇ ±âº»±¸Á¶¸¦ º¸¸é ´ÙÀ½°ú °°½À´Ï´Ù.
|
class Ŭ·¡½º¸í{ ¡¦ ¡¦ µ¥ÀÌÅÍŸÀÔ this[int index]{ set { //ÁöÁ¤µÈ ¿ä¼Ò ¼³Á¤ } get { //ÁöÁ¤µÈ ¿ä¼Ò ¹Ýȯ } } ¡¦ ¡¦ }//Ŭ·¡½º |
À§ ±¸Á¶¸¦ ¹è¿°ú ¿¬°üÇÏ¿© ¼³¸í µå¸®¸é, µ¥ÀÌÅÍŸÀÔÀº ¹è¿ÀÇ Å¸ÀÔó·³ Àε¦¼¸¦ »ç¿ëÇÏ¿© »©°í ³ÖÀ» ŸÀÔÀ» ¸»Çϸç this´Â À§¿¡¼ ¸»¾¸ µå¸° °Íó·³, ÀÌ Å¬·¡½º ÀÚü¸¦ ÂüÁ¶ÇÏ´Â °ÍÀ̰í, index´Â ¹è¿ÀÇ Ã·ÀÚ¿Í °°Àº ±¸¼º¿ä¼Ò¸¦ ÁöÁ¤ÇÏ´Â ¸Å°³º¯¼ö ÀÔ´Ï´Ù. set°ú getÀº ¼Ó¼º¿¡¼ÀÇ ±×°Í°ú µ¿ÀÏÇÑ ¿ªÇÒÀ» ÇÕ´Ï´Ù. set ³»ºÎ¿¡¼´Â ¿ÜºÎ·ÎºÎÅÍ µé¾î¿À´Â ÀÎÀÚ¸¦ value¶ó´Â ±âº»°ªÀ» ÀÌ¿ëÇÏ°Ô µË´Ï´Ù.
±×·¯¸é ½ÇÁ¦ Àε¦¼(Indexer)¸¦ »ç¿ëÇÑ ¿¹Á¦¸¦ »ìÆìº¸°Ú½À´Ï´Ù. ´ÙÀ½ÀÇ ¿¹Á¦´Â ¹®ÀÚ¿À» ¾ò¾î³»°í ÁöÁ¤Çϱâ À§ÇÑ Àε¦¼¸¦ °¡Áø Ŭ·¡½º¸¦ ¸¸µé°í, ArrayList Ŭ·¡½º¸¦ ÀÌ¿ëÇØ¼ ¹®ÀÚ¿À» °ü¸®ÇÏ´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù.
|
& |
IndexerTest.cs |
Ü Indexer¸¦ Å×½ºÆ®ÇÑ ¿¹Á¦ |
|
using System; using System.Collections; class SimpleIndexer{ ArrayList lname = new ArrayList(); public object this[int index]{ get{ if (index >-1 & index<lname.Count) {//¹üÀ§³»¿¡ ÀÖ´Â °Í return lname[index]; }else{ return null; } } set{ if(index>-1 & index<lname.Count){//¹üÀ§³»¿¡ Àִ°ÍÀº º¯°æµÊ lname[index] = value; } else if (index == lname.Count){//¼ø¼´ë·Î Çϳª¾¿ Ãß°¡ÇÏ¸é µÊ lname.Add(value); } else {//¼ø¼´ë·Î°¡ ¾Æ´Ï¸é Console.WriteLine("sid["+index+"] : ÀÔ·Â ¹üÀ§ Ãʰú ¿¡·¯!!"); } } } } class IndexerTest { public static void Main(){ SimpleIndexer sid = new SimpleIndexer(); sid[0]= "hong"; sid[1]= "kim"; sid[2]= "sung"; sid[10] = "park"; // ¹üÀ§Ãʰú Console.WriteLine("----getting----"); Console.WriteLine(sid[0]); Console.WriteLine(sid[1]); Console.WriteLine(sid[2]); }//main }//class | ||
|
C:\C#Example\05>csc IndexerTest.cs C:\C#Example\05>IndexerTest ----setting---- sid[10] : ÀÔ·Â ¹üÀ§ Ãʰú ¿¡·¯!! ----getting---- sid[0] : hong sid[1] : kim sid[2] : sung sid[3] : Àμö 3¿¡ ÇØ´çÇÏ´Â µ¥ÀÌÅͰ¡ ¾ø½À´Ï´Ù. | ||
¼Ò½º¸¦ ºÐ¼®ÇØ º¸¸é ¸ÕÀú ArrayList Ŭ·¡½º¸¦ »ç¿ëÇϱâ À§Çؼ System.Collections ³×ÀÓ½ºÆäÀ̽º¸¦ usingÇϰí ÀÖ½À´Ï´Ù. ArrayList Ŭ·¡½º´Â °´Ã¼µéÀ» ÀúÀåÇϱâ À§Çؼ »ç¿ëµÇ´Â ´å³Ý ÇÁ·¹ÀÓ¿÷ÀÇ Å¬·¡½º·Î, ÀÌ¿Í °°ÀÌ ¹è¿µî Ä÷º¼Ç¿¡ °ü·ÃµÈ Ŭ·¡½ºµéÀ» Á¤ÀÇÇÑ ³×ÀÓ½ºÆäÀ̽º°¡ System.CollectionsÀÔ´Ï´Ù.
n using System.Collections;
±×¸®°í Àε¦¼¸¦ ¼±¾ðÇÏ´Â SimpleIndexer Ŭ·¡½ºÀÇ ³»ºÎ¸¦ »ìÆìº¸¸é, ¸ÕÀú °´Ã¼¸¦ ÀúÀåÇϱâ À§Çؼ ArryListÀÇ °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù.
n ArrayList lname = new ArrayList();
Àε¦¼ÀÇ ¸®ÅÏÇüÀ» object·Î ¼±¾ðÇÕ´Ï´Ù. ArrayListÀÇ °´Ã¼°¡ ¹ÝȯÇÏ´Â °ªÀÌ object ÇüÀ̹ǷΠÀÌ·¸°Ô ¼±¾ðÇØ¾ß ÇÕ´Ï´Ù.
n public object this[int index]
get Á¢±ÙÀÚ¿¡¼´Â »© °¡·Á´Â °ªÀÌ ÇöÀç ArryList °´Ã¼°¡ °¡Áø °ªÀÌ¸é ±× °ªÀ» ¸®ÅÏÇØ ÁÖ°í ±×·¸Áö ¾Ê´Ù¸é, nullÀ» ¹ÝȯÇÕ´Ï´Ù. ÀÌ ¶§ index´Â ¸®ÅÏÇÒ °ªÀÇ À§Ä¡¸¦ ÀǹÌÇÕ´Ï´Ù.
n get{
n if (index >-1 & index<lname.Count) {//¹üÀ§³»¿¡ ÀÖ´Â °Í
n return lname[index];
n }else{
n return null;
n }
n }
¸¶Âù°¡Áö·Î set Á¢±ÙÀÚ¿¡¼µµ indexÀÇ À§Ä¡¿¡ µ¥ÀÌÅ͸¦ ÇÒ´çÇÏ°í ¸¸¾à index°¡ ÇØ´ç ¹üÀ§¸¦ ³ÑÀ¸¸é ±×¿¡ ÇØ´çÇÏ´Â ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÕ´Ï´Ù.
n set{
n if(index>-1 & index<lname.Count){//¹üÀ§³»¿¡ Àִ°ÍÀº º¯°æµÊ
n lname[index] = value;
n } else if (index == lname.Count){//¼ø¼´ë·Î Çϳª¾¿ Ãß°¡ÇÏ¸é µÊ
n lname.Add(value);
n } else {
n Console.WriteLine("sid["+index+"] : ÀÔ·Â ¹üÀ§ Ãʰú ¿¡·¯!!");
n }
n }
¾Æ·¡ÀÇ ½ÇÇà Ŭ·¡½ºÀÇ ¸ÞÀÎ ¸Þ¼µå¿¡¼´Â Àε¦¼¸¦ Æ÷ÇÔÇÑ Å¬·¡½ºÀÇ °´Ã¼¸¦ »ý¼º½ÃÄÑ ¸¶Ä¡ ¹è¿Ã³·³ °ªÀ» Áý¾î³Ö°í ¶Ç ºÒ·¯¿À°í ÀÖ½À´Ï´Ù. À̰ÍÀ» °¡´ÉÇÏ°Ô ÇÏ´Â °ÍÀÌ ¹Ù·Î Àε¦¼(Index)ÀÔ´Ï´Ù.
n sid[0]= "hong";
n sid[1]= "kim";
n sid[2]= "sung";
n sid[10] = "park";
n Console.WriteLine("----getting----");
n Console.WriteLine(sid[0]);
n Console.WriteLine(sid[1]);
n Console.WriteLine(sid[2]);
ÀÌ·¸°Ô Àε¦¼´Â ¹è¿°ú °°Àº ÇüÅ·Π°´Ã¼¸¦ »ç¿ëÇÏ°í ½ÍÀ» ¶§ Ŭ·¡½º ³»¿¡ ±¸Çö ÇØ ÁÖ¸é µÇ´Â °ÍÀÔ´Ï´Ù. ±×¸®°í, »ç¿ëÀÚ°¡ ±× °´Ã¼¸¦ ¹è¿°ú °°Àº Çü½ÄÀ¸·Î Á¢±ÙÇÒ ¼ö ÀÖÀ¸¸ç ¿øÇÏ´Â °á°ú¸¦ ¸°ÅÏÇØ ¾ò¾î ³¾ ¼ö ÀÖ´Â °ÍÀÌ Àε¦¼ÀÇ ¿ªÇÒÀÔ´Ï´Ù. Áï, ³»ºÎÀÇ ½ÇÁ¦ÀûÀÎ ±¸ÇöÀ» ¾î¶»°Ô Çϴ°¡´Â ÇÁ·Î±×·¡¸ÓÀÇ ¸òÀÎ °ÍÀÔ´Ï´Ù.
| jabookÀúÀÚ¸íÇÔ |
|
Á¦¸ñ:¼Ò¼³°°ÀºC# Á¦5°ÀÇ ÀúÀÚ:ÃÖ¿µ°ü |