// 클래스 배열의 변수class A{ public int number;}A[] arr = new A[3];**arr[0] = new A();**arr[0].number = 155;// arr[1].number = 4; 이것만 쓰면 에러발생arr[1] = new A();rr[1].number = 4;
디박 스트링도 인덱스였음
string s = “Hello”;char c = s[0]; //c = ‘H’s가 배열이 아님에도 불구하고 배열처럼 사용하고 있다. 이것은 String 클래스가 인덱서로 구현되어 있기 때문에 가능한 것이다. 인덱서를 사용하면 string 타입처럼 객체를 배열처럼 쓰는 것이 가능해 진다는 것이다.s[2] = ‘c’; //에러이 경우 오류가 발생 하는 것은 String 인덱서가 읽기 전용으로 만들어졌기 때문**[출처]** [닷넷, C# 인덱서(Indexer)](https://blog.naver.com/leejongcheol2018/221449844041)|**작성자** [풀스택개발자](https://blog.naver.com/leejongcheol2018)
[예제1 인덱서 심플 예제]using System;namespace IndexerTest{ class Dept { public string[] emps = new string[3]; public string this[int i] { get { return emps[i]; } set { emps[i] = value; } } } class Program { static void Main(string[] args) { Dept d1 = new Dept(); d1.emps[0] = "사원1"; d1.emps[1] = "사원2"; d1.emps[2] = "사원3"; // 이렇게 바로 접근 d1[0] = "사원1"; d1[1] = "사원2"; d1[2] = "사원3"; Console.WriteLine(d1[0]); } }}[예제3 : 문자열을 첨자로 사용한 인덱서 예제]using System;using System.Collections;class DayCollection{ string[] days = { "일", "월", "화", "수", "목", "금", "토" }; // This method finds the day or returns -1 private int GetDay(string testDay) { for (int j = 0; j < days.Length; j++) { if (days[j] == testDay) { return j; } } return 999; } public int this[string day] { get { return (GetDay(day)); } }}class Program{ static void Main(string[] args) { DayCollection week = new DayCollection(); System.Console.WriteLine(week["일"]); //0 // 999 리턴 System.Console.WriteLine(week["Made-up Day"]); }}[예제4 : 일반화 프로그래밍을 이용한 인덱서 예제]class Ojc<T> //일반화 클래스 정의{ //외부에서 접근못하도록 private으로 배열을 정의하고 //배열의 값은 인덱스를 통해 다루도록 한다. //배열의 타입은 Ojc를 사용하는 시점에 정의 ==> Generic private T[] ojcArr = new T[10]; //Generic을 이용하여 인덱서를 정의하자. public T this[int i] { get //R-VALUE { return ojcArr[i]; } set //L-VALUE { ojcArr[i] = value; } }}class Program{ static void Main(string[] args) { Ojc<string> ojc1 = new Ojc<string>(); ojc1[0] = "Hello, OJC"; //string s = ojc1[0]; System.Console.WriteLine(ojc1[0]); Ojc<int> ojc2 = new Ojc<int>(); ojc2[0] = 999; System.Console.WriteLine(ojc2[0]); }}[결과]Hello, OJC999[출처] 닷넷, C# 인덱서(Indexer)|작성자 풀스택개발자