유니티 버전 - 2022.3.44f1
들어가며
프로퍼티란 클래스나 구조체의 필드 값을 제어하는 방법 중 하나입니다, 주로 필드 값을 읽거나 수정할 때 사용되며, 외부 클래스에서 안전하게필드에 접근하도록 하는데 유용합니다
프로퍼티는 왜 사용하는 것 일까요?
테스트라는 클래스가 있다고 가정하겠습니다, 여기에서 health라는 필드의 값을 다른 외부 클래스에서 참조만 하고 수정하지 못하도록 하여 오직 Test 클래스에서만 수정하려고 합니다
지금은 health라는 정보 하나만 보호해야 하므로 GetHealth()와 SetHealth() 메서드 두 개로 해결 가능합니다, 하지만 이러한 변수가 많아진다면 메서드도 그에 따라 증가하고, 유지보수도 힘들고 비효율적입니다
그래서 등장한 것이 프로퍼티입니다, 이것을 이용하여 데이터의 은닉성을 보장해주고 편리하게 필드의 값을 읽거나 수정할 수있습니다, 메서드를 이용하는 것보다 간결하고 직관적으로 필드에 접근 할 수 있게 해줍니다
프로퍼티
프로퍼티는 필드를 직접 노출하지 않고, get과 set 접근자를 이용하여 필드 값을 읽거나수정하는 메서드를 포함합니다
일반적으로 프로퍼티는 대문자로 시작합니다
현재 Test 클래스에 Health라는 프로퍼티가 존재합니다, 이것을 이용하여 Test2클래스에서 값을 참조 및 변경해보겠습니다, health에 접근하고자 할때 Health 프로퍼티를 대신해서 사용합니다, get을 이용하여 현재 health를 반환하고, set을 이용하여 health를 수정합니다
Test2 에서 Debug를 통하여 보니 health의 처음 값 은 0, 수정 후 health의 값은 100 이였습니다, 하지만 이렇게 참조와 수정이 타 클래스에서도 가능하게 한다면 보호의 의미가 사라지기에 set 앞에 private를 이용하여 수정하지 못하도록 해줍니다
set 앞에 private를 사용하자 Test2의 클래스에서는 값을 수정할 수 없게 되었습니다, Test2의 클래스에서는 Health 프로퍼티를 이용하여 private 변수인 health의 값을 가져올 수는 있지만 수정은 할 수 없게 되었습니다, 이로써 타 클래스에서 필드의 은닉성을 보장하면서도 참조가 가능하도록 되었습니다
get과 set 둘 다 반드시 있어야하지않고, get만 사용하거나 set만 사용할 수 도 있습니다
또 값을 반환하거나 수정하기전 다양한 작업이 가능해져서 확장성이 높아집니다
마치며
프로퍼티에 대하여 알아보았습니다
이상입니다
'코드 및 공부 > 기타' 카테고리의 다른 글
Unity - Scripting API를 참고하는 법 (1) | 2024.10.14 |
---|---|
TagManager.preset을 이용한 태그 및 레이어 관리 (0) | 2024.10.11 |
c# - 배열 (2) | 2024.09.25 |
c# - 변수의 종류와 접근 제한자, 키워드 (0) | 2024.09.24 |
c# - 변수와 자료형 (0) | 2024.09.23 |