¼Ò¼³°°ÀºC#  Á¦5°­ÀÇ C#ÀÇ ´ÙÇü¼º  13. ÀÎÅÍÆäÀ̽º ³»ÀÇ Àε¦¼­ ±¸Çö  

 

5.13 ÀÎÅÍÆäÀ̽º ³»ÀÇ Àε¦¼­ ±¸Çö

 

ÀÎÅÍÆäÀ̽º ³»¿¡ Àε¦¼­ ¶ÇÇÑ Ãß°¡ µÉ ¼ö ÀÖ½À´Ï´Ù. Àε¦¼­¸¦ Ãß°¡Çϱâ À§Çؼ­´Â Àε¦¼­ÀÇ ÇÁ·ÎÅäŸÀÔ¸¸À» ÀÎÅÍÆäÀ̽º¿¡ ¸í½ÃÇÑ ÈÄ À̸¦ ±¸Çö(Implementation)ÇÏ¸é µË´Ï´Ù. Àε¦¼­°¡ Ãß°¡µÈ ÀÎÅÍÆäÀ̽º´Â ´ÙÀ½°ú °°½À´Ï´Ù.

 

n                 public interface SimpleInterface{

n                    object this[int index] { get; set; }//Àε¦¼­

n                 }

 

´ÙÀ½Àº ÀÎÅÍÆäÀ̽º ³»¿¡ Àε¦¼­ÀÇ ÇÁ·ÎÅäŸÀÔÀ» »ðÀÔÇϰí À̸¦ ±¸ÇöÇÑ ¿¹Á¦ÀÔ´Ï´Ù.

 

&

InterfaceIndexerTest.cs

Ü Indexer¸¦ Å×½ºÆ®ÇÑ ¿¹Á¦

using System;

using System.Collections;

public interface SimpleInterface{

         object this[int index] { get; set; }//Àε¦¼­

}

public class SimpleIndexer : SimpleInterface{

       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 InterfaceIndexerTest {

          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 InterfaceIndexerTest.cs

C:\C#Example\05>InterfaceIndexerTest

sid[10] : ÀÔ·Â ¹üÀ§ Ãʰú ¿¡·¯!!

----getting----

hong

kim

sung

 

À§ÀÇ ¿¹Á¦´Â 5.6ÀýÀÇ Àε¦¼­ ±¸Çö¿¡¼­ ÀÎÅÍÆäÀ̽º¸¸À» Ãß°¡ÇÑ ¿¹Á¦ÀÔ´Ï´Ù. 5.6ÀýÀÇ ¿¹Á¦¿Í ºñ±³Çϸ鼭 º¸½Ã±â ¹Ù¶ø´Ï´Ù.



jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°ÀºC# Á¦5°­ÀÇ
ÀúÀÚ:ÃÖ¿µ°ü