안녕하세요

프로그램 과정에서 막혔던 문제들에 대한 해결책 정리


페이지 목록

레이블이 (... as ..)?.Function()인 게시물을 표시합니다. 모든 게시물 표시
레이블이 (... as ..)?.Function()인 게시물을 표시합니다. 모든 게시물 표시

2025년 12월 14일 일요일

[유니티][Unity][C#] If ... is ... ... 과 (... as ...)?.Function() 에 대하여

 IMainCharAttackView Interface와

MainCharAttackView: ImainCharAttackView 로 인터페이스를 상속받는 class가 있을때


IMainCharAttackView _view;


MainCharAttackPresenter(IMainCharAttackView view)
{

  _view = view;

}


로 되어 있을 때 이런 식으로 사용하게 된다.


if( _view is MainCharAttackView concreteView)

   concreteView.function();

}

  이 뜻은 _view가 MainCharAttackView 라면 concreteView에 _view를 할당해서 쓰라는 것이다.

 그래서 MainCharAttackView의 function을 concreteView가 사용하게 된다.


사실은 _view가 이미 MainCharAttackView 타입이기에 그냥 써도 되지만 이런 if문을 씀으로 인해서 정확하게 MainCharAttackView 형임을 확인하고 명확하게 concreteView를 통해 안정적으로 실행하게 된다.


(_view as MainCharAttackView)?.Function() 은

 _view를 MainCharAttackView형으로 바꿨을 때 된다면 Function을 실행하고

형이 안 맞으면 null값을 반환하라는 뜻이다.


 Google AI의 도움을 받아 작성하였습니다.