-
인덱서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); } }
'C# 예제 공부일기' 카테고리의 다른 글
이름 없는 델리게이트(Anonymous Delegate) (0) 2020.07.22 Delegate의 기본, 배열에서 홀수와 짝수 찾기 + Delegate 예제 (0) 2020.07.22 SortedList와 Sorted<TKey, TValue> (0) 2020.07.21 Hashtable과 Dictionary<TKey, TValue> (0) 2020.07.21 Stack<T> 와 Polish 계산기 (0) 2020.07.21