관리 메뉴

개발블로그

[유니티 C#] 유니티 Object 암시적 null 비교 본문

Unity/스크립팅

[유니티 C#] 유니티 Object 암시적 null 비교

dvmoo 2021. 11. 16. 17:55
using UnityEngine;
using UnityEngine.UI;

private Image _imgSample = null;
private Image _imgSuper  = null;

private void Start()
{
    if(_imgSample)
    	BlahBlah();
}

private void BlahBlah()
{
     _imgSuper.SetActive(false);
}

코드 분석중에 처음보는 구문을 발견했는데, 바로 if문에서 image타입만 조건으로 들어있는 조건문이었다.

보통은 if(_bool == true) 이런식의 조건문을 많이 사용해왔어서 생소한 구문이다.

// 처음에 nullable 타입인줄 알았는데 오브젝트의 암시적 null 비교 구문이었다😂 nullable 타입도 정리해봐야할듯...

 

 

public static implicit operator bool(Object exists);

Object의 메타데이터를 확인해보면 암시적(묵시적) 변환을 정의하는 operator가 있다.

유니티에서 Object를 상속받은 클래스의 인스턴스들은 이 묵시적 변환에 의해서

오브젝트가 null이 아니면 true를 반환하는 형식이다.

그러므로 오브젝트가 null이면 false를 반환한다.

 

 

따라서 맨 위 코드를 다시 보면,

Image _imgSample;

private void Start()
{
    if(_imgSample)
    	BlahBlah();
}

그래서 Object 클래스를 상속받고있는 Image 형 _imgSample 변수가 if문 안의 조건으로 들어간다면,

'만약 _imgSample이 null이 아니면 (true) 함수 BlahBlah()를 실행한다.' 

라고 이해할 수 있다.

 

 

 

 

 

* 사용자 정의 연산자 관련 도큐먼트

https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/operators/user-defined-conversion-operators

 

사용자 정의 전환 연산자 - C# 참조

C#에서 사용자 지정 암시적 및 명시적 형식 변환을 정의하는 방법을 알아봅니다.

docs.microsoft.com


* 공부하는 단계입니다. 잘못된 내용이 있다면 피드백 부탁드립니다😊

* e-mail : heehee970@naver.com