작성자 없음
작성자 정보가 삭제된 글입니다.
해결된 질문
작성
·
258
답변 4
4
ㅎㅎㅎ 당황하실건 없고 그냥 아주 약간 차이가 있습니다.
(Socket) 요렇게 캐스팅하는게 가장 일반적인데
이 경우 Socket으로 캐스팅 될 수 없으면 Exception이 나면서 크래시가 납니다.
(as Socket) 형태는 C++의 dyamic_cast와 유사한데,
캐스팅이 안 된다면 null을 반환한다는 특징이 있습니다.
사실 지금은 Socket 타입인 것을 100% 확신할 수 있으니
(Socket) 이렇게 하는게 성능상 아주 조금 낫긴 합니다.
2
네 약간의 차이는 있지만 선택의 영역이라 볼 수 있습니다.
다만 상속 관계에서 특정 타입에만 코드를 적용하고 싶을 때라면,
의도적으로 (as)를 이용해서 확인하는게 유용할 수도 있습니다.
예를 들어 class Monster : Object, class Player : Object로 정의된 상태에서,
처치한 Object가 Player인 경우에만 PvP 포인트를 주고 싶다면,
Player p = obj as Player;
if (p != null)
AddPvpPoint(...);
형태로 만들 수가 있겠죠.
0
0
감사해요! 모호하던것들이 점점 명확해져 가는 기분입니다.
그러면 상속을 받거나 구현체의 경우 Method에 where를 걸지 않는다면 as 키워드로 캐스팅을 하고
where를 걸었을 경우엔 () 괄호로 캐스팅 하는것이 안전할 것 같다는 생각이 드는데
이건 어디까지나 선택의 방법이겠죠?