유니티 버전 - 2022.3.59f1
목차
- 기존 Object != null
- ReferenceEquals()를 이용한 null 비교
- 어떤상황에서 사용해야할까
기존 Object != null
오디오 클립을 딕셔너리에서 찾고 클립이 존재한다면 가져와서 실행시키는 로직입니다
null 비교는 단순이 참조가 null인지 여부를 확인하는 것뿐만 아니라, 해당 객체의 네이티브 상태까지 검사합니다, 네이티브 상태를 검사한다는 것은 오브젝트가 내부적으로 연결되어있는 c++기반의 실제 리소스가 아직 유효한지도 함께 검사한다는 것을 의미합니다, 그래서 더 많은 성능을 요구합니다
ReferenceEquals()를 이용한 null 비교
object.ReferenceEquals(clip, null)은 .NET의 기본 메서드로, 단순한 참조 비교만 수행합니다, 단순한 참조 비교란 객체가 메모리 상에서 어떤 인스턴스를 가리키고 있는지, 즉 해당 변수의 메모리 주소가 null인지 아닌지만 확인합니다, 두 객체가 같은 메모리 주소를 참조하는지 혹은 객체가 null인지만 확인하기때문에 성능적으로 더 가볍습니다
어떤상황에서 사용해야할까?
== null != null : 오브젝트가 실제로 파괴되었는지 혹은 네이티브 리소스가 유효한지를 판단해야할때, 오브젝트가 파괴된 상태인지를 판단하여 이후 로직을 달리해야할때 사용합니다
ReferenceEquals() : 단순 참조 체크만으로 충분한 경우에 사용합니다, "이 변수에 아무것도 들어있지 않은지만 확인하는" 방법입니다 즉, 그 변수에 실제 객체가 할당되어 있는지만 판단하는 것입니다
주의할 점은 ReferenceEquals()는 파괴된 오브젝트를 유효한 객체라고 판단할 수 있기때문에 위의 설명을 참고하여 상황에 맞게 사용해야될 것 같습니다
'코드 및 공부 > 최적화' 카테고리의 다른 글
Int값을 .ToString() 후 캐싱하여 사용하기 (0) | 2025.04.01 |
---|---|
딕셔너리의 GetValueOrDefault() (0) | 2025.03.27 |
CommandSceheduler를 이용한 메서드 순차 실행 (0) | 2025.03.22 |
그래픽 옵션(Quality) 변경하기 (0) | 2025.02.04 |
Profiler와 Stopwatch를 이용한 코드 비교 및 최적화 (1) | 2025.01.16 |