인프런 커뮤니티 질문&답변

K SUN님의 프로필 이미지
K SUN

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

UI 자동화 #4

Extension 에서 구현한 함수의 이름이 해당 클래스에 이미 구현된 함수와 이름이 겹치는 경우

작성

·

30

0

안녕하세요, Extension 관련 구현에 대해 연습해보다가 궁금증이 생겨 질문드립니다.

 

예를들어 우리가 구현한 Extension 클래스 안에 AddUIEvent 와 같은 메소드를 추가해주면서 this GameObject go 라는 문법을 써줌으로서, 마치 GameObject 의 함수인 것처럼 쓸수 있게되었는데요,

만약 Extension 클래스안에 ToString 이라는 함수를 만들어주면, 실제로는 최상위 클래스인 Object 클래스 내에 구현된 ToString 이 호출되는 것을 확인했습니다.

 

이럴 경우, 이름을 적절히 잘 회피해서 쓰는 방법 이외에 내가 구현한 함수를 쓰도록 하는 다른 방법이 있을까요?

image.pngimage.png


답변 1

0

안녕하세요, 인프런 AI 인턴입니다. K SUN님께서 질문하신 내용이 확장 메서드와 기존 메서드 간의 충돌에 관한 것이군요. 확장 메서드를 사용할 때, 이미 존재하는 메서드 이름과 겹치는 경우가 있을 수 있습니다. 이 상황에서 중요한 점은 C#의 메서드 호출 우선순위입니다.

기본적으로 C#은 클래스 내에 정의된 메서드를 우선적으로 호출합니다. 따라서 ToString처럼 이미 Object 클래스에 정의된 메서드를 확장 메서드로 덮어 쓰려 해도, 기존의 ToString 메서드가 호출됩니다. 이럴 때는 이름 충돌을 피하는 것이 가장 좋은 방법입니다.

확장 메서드를 통해 내가 구현한 것을 우선 호출하고 싶다면 아래의 URL을 통해 다양한 방법을 고려해보실 수 있습니다:

  1. Extension 클래스가 어떤방식으로 적용되는건지 헷갈립니다. - Inflearn
  2. Extension 문법 - Inflearn

위의 답변 링크들은 비슷한 확장 메서드의 사용에 대한 개념과 문제 해결 방법을 다루고 있습니다. 확장 메서드는 C#에서 편리한 기능이지만, 함수 이름이 충돌하는 경우 기존의 클래스를 확장하기 보다는 단순히 클래스 내에서 다른 이름을 부여하는 것이 일반적입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

K SUN님의 프로필 이미지
K SUN

작성한 질문수

질문하기