ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인덱서
    C# 예제 공부일기 2020. 7. 22. 18:55

    인덱서는 인스턴스 내의 데이터에 접근하는 방법입니다. 용도는 속성(Property)과 똑같은데 다른 점은 배열과 같이 인덱스를 사용할 수 있다는 점이다. 인덱서는 this[]를 사용하며 겟터와 셋터를 만든다. 겟터와 셋터에서 클래스의 어떤 값을 가져오고, 어떤 값을 세팅하는지 정해주면 된다.

    class MyCollection<T> //제네릭 클래스인 MyCollection<T> 정의
        {
            //T형 자료를 100개 저장할수 있는 배열 생성
            private T[] array = new T[100];
            
            //인덱서 생성
            public T this[int i] 
            { //this 키워드를 사용해서 정수 인덱스 사용 가능하게 한다.
                get { return array[i]; }
                set { array[i] = value; }
            }
        }
        class Program
        {
    
            static void Main(string[] args)
            {
                //MyConllection 인스턴스 MyString을 정의한다.
                var MyString = new MyCollection<string>();
                MyString[0] = "Hello, World";
                MyString[1] = "Hello, C#";
                MyString[2] = "Hello, Indexer!";
    
                for (int i = 0; i < 3; i++)
                    Console.WriteLine(MyString[i]);
    
            }
    
        }

     

     

    인덱서 예제 더 

    using System;
    
    class TestInt
    {
        private int[] _array;
        public TestInt(int Size)
        {
            _array = new int[Size];
        }
    
        public int this[int Index]
        {
            get
            {
                return _array[Index];
            }
            set
            {
                _array[Index] = value;
            }
    
        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            TestInt aTestInt1 = new TestInt(10); // 10
            TestInt aTestInt2 = new TestInt(20); // 20
        }
    }

    위 예제는 생성자를 이용해서 동적으로 배열의 크기를 맞춰 사용하는 방식이다.

     

    using System;
    public class PropertyTest
    {
      private string _name;           // RW
      public string GetName()
        {
        return _name;
        }
      public void SetName(string value)
      {
        _name = value;
      }
      public string Name        // 프로퍼티 Property
      {
        get
        {
          return _name;
        }
        set
        {
          _name = value;
        }
      }
    
      private int _ReadOnly;          // R
      public int ReadOnly
      {
        get
        {
          return _ReadOnly;
        }
      }
    
    
      private int _WriteOnly;         // W
      public int WriteOnly
      {
        set
        {
          _WriteOnly = value;
        }
      }
    
      private static int _Static;     // Static
      static public int Static
      {
        get
        {
          return _Static;
        }
        set
        {
          _Static = value;
        }
      }
    
    
    
    
    
    
    
    
    }
    
    public class Test
    {
      public static void Main(string[] args)
      {
        PropertyTest pt = new PropertyTest();
        pt.Name = "헬로 키티";      // Property의 set 기능 테스트 : write
        Console.WriteLine(pt.Name); // Property의 get 기능 테스트 : read
        Console.WriteLine(pt.ReadOnly);
        //pt.ReadOnly = 100;
        pt.WriteOnly = 100;
        //Console.WriteLine(pt.WriteOnly);
        PropertyTest.Static = 200;
        Console.WriteLine(PropertyTest.Static);
      }
    
    }

     

     

Designed by Tistory.