less than 1 minute read

C# List 감싸는 대체 Class 생성

오늘은 List를 json에 넣기위해 class로 감싸보았다.
이전에도 이런 작업을 하긴 했는데, 그때는 내부에 List를 그대로 꺼내서 썼지만, 이번에는 List와 똑같이 동작하는 자체 클래스로 만들어보았다.

// Sets or Gets the element at the given index.
// 리스트가 [index]로 가져오는 함수를 가져와서 따라함
public Item this[int index]
{
	get
	{
		// Following trick can reduce the range check by one
		if ((uint)index >= (uint)Count)
		{
			throw new IndexOutOfRangeException("Index 범위 초과!!");
		}
		return Data[index];
	}

	set
	{
		if ((uint)index >= (uint)Count)
		{
			throw new IndexOutOfRangeException("Index 범위 초과!!");
		}
		Data[index] = value;
	}
}

이 부분인데, 이렇게 Data는 List이다.
이건 List의 코드에 가서 가져온 것으로, 이렇게하면 외부에서 이 클래스를 실제 리스트처럼

ItemList[index]

형식으로 리스트의 원소에 접근하여 가져오거나, 수정할 수 있다.
이런식으로 비슷하게 원래 int의 +,-,*,/ 등의 작업도 수정할 수 있을 것이다.
다른 언어에서 이런것을 보았던 것 같은데, 생각해보니 여기서 한 방법처럼, 해당 기능의 구현 파일에 들어가보면 어떤 언어든지 이런식으로 새로운 타입에 원래쓰던 기능들을 넣어줄 수 있을 것이다.