-
[09강] 속성과 인덱서프로그래밍/C# 2022. 6. 13. 02:09
목차
속성의 의미와 역할
형식
인덱서의 의미와 역할
형식속성의 의미와 역할
속성(Property)
속성의 일반적인 개념
- 사물의 특징이나 성질, 한 부분들
클래스 안의 특징적인 부분들을 사용할 수 있게 하는 것.
속성의 역할
- 클래스 안의 멤버변수에 값 읽기 또는 저장이 가능하게 하는 것
속성의 대상이 되는 멤버 변수?
- 클래스 안에 있는 멤버 변수. 특히 주로 private로 선언된 멤버 변수를 외부에서 접근할 수 있게 해 준다.
멤버변수가 public으로 저장되어 있으면 프로퍼티를 사용할 필요가 없다.
- 어떻게 보면 클래스의 캡슐화를 깨고 들어가는 것일 수 있으나, 프로그래밍을 하다 보면 외부에서 접근하여 값을 읽거나 변경하는 작업이 필요할 때가 생기게 된다. 프로퍼티는 이러한 통로를 제공하는 역할을 한다.
keyword
- get(접근할 멤버 변수의 값을 읽을 때 사용됨), set(접근할 멤버 변수의 값을 설정할 때 사용됨), value, return
형식
변수와 동일하게 사용(형태가 변수와 같다)
대입연산자와 연산을 동일하게 사용 가능
속성 값 읽기와 저장 형식
[접근 한정자] 데이터명 속성명
{
get { return 멤버변수; }
set { 멤버변수 = value; }
}
get, set의 활용 예
get, set에 논리 또는 처리 코드를 적용
class A { private int number; private string name; public string Name { get { return name; } set { name = value; } } public int Number { get { return number; } set { if (value < 0 || value > 9) number = 0; else number = value; } } }인덱서의 의미와 역할
인덱서(indexer) : 속성 + 배열의 형식을 사용하여 찾아내는 역할
인덱스의 사전적인 의미 : 색인
- 어떤 것을 뒤져서 찾아내거나 필요한 정보를 밝힘
- 책 속의 내용 중에서 중요한 단어나 항목, 인명 따위를 쉽게 찾아볼 수 있도록 일정한 순서에 따라 별도로 배열하여 놓은 목록
인덱서의 역할
- 클래스 내의 배열 또는 컬렉션을 외부에서 접근할 수 있도록 하는 역할
- 키워드 : 속성 형식 + 배열 형식
get, set, return, value + this[int index]
- 사용 방법
배열과 같이 사용
객체명[인덱스] = 값 또는 변수;
변수 = 객체명[인덱스];
형식
- 기본 형식
[접근 한정자] 데이터형 this[int index]
{
get { }
set { }
}
예시 코드
public class Practice { static void Main(string[] args) { B test = new B(); for (int i = 0; i < 5; i++) { test[i] = i; Console.WriteLine(test[i]); } } } class B { private int[] number = new int[5]; public int this[int index] { get { return number[index]; } set { number[index] = value; } } }인덱서 사용 예시
컬렉션 ArrayList
public class Practice { static void Main(string[] args) { C test = new C(); test[0] = "A"; test[1] = "B"; test[2] = "c"; test[3] = "D"; test.Print(); test[1] = "Hello World!"; test.Print(); } } class C { private ArrayList _list = new ArrayList(); public string this[int index] { get // index가 0과 _list 카운트 사이이면 값을 반환, 아니면 null을 반환 { if (index >= 0 && index < _list.Count) return (string) _list[index]; else return null; } set // index가 0과 _list 카운트 사이이면 값을 설정, _list카운트이면 새 리스트를 추가 { if (index >= 0 && index < _list.Count) _list[index] = value; else if (index == _list.Count) _list.Add(value); } } public void Print() { foreach (string _collection in _list) { Console.WriteLine(_collection); } } }정리
속성
- 외부에서 접근하기 어려운 private, protected 멤버변수를 외부에서 사용할 수 있도록 하기 위함
- 직접 접근을 하기 보다는 한번 감싸서 다른 이름으로 접근하도록 함
- 변수 수준
인덱서
- 멤버 중에서 배열 또는 컬렉션 등을 속성 형식으로 외부에서 사용할 수 있도록 하기 위함
- 속성 + 배열 = 인덱서
'프로그래밍 > C#' 카테고리의 다른 글
[11강] 델리게이트와 이벤트 (0) 2022.06.20 [10강] 배열/객체배열, 속성/인덱서 비교 (0) 2022.06.20 [08강] 클래스 (0) 2022.05.31 [07강] 프로젝트 실습 - 스마트 밥솥 (0) 2022.05.29 [06강] 파일 입출력 (0) 2022.05.02