2017-04-23 4 views
2

현재 하나의 int 매개 변수를 사용하는 메소드를 오버로드하고 싶습니다. 과부하는 대신 double 또는 decimal 중 하나를 취합니다.오버로드 된 메서드가 매개 변수를 캐스팅 한 다음 원래 메서드를 호출 할 수 있습니까?

오버로드가 맨 위에 매개 변수를 캐스팅 한 다음 원본과 완전히 동일한 코드를 사용하는 대신 오리지널을 호출 할 수 있습니까?

+0

정확도를 잃지 않는다면 괜찮습니다. –

+0

그래, @ GillBates 정밀도를 잃어 버리는 것은 좋지만 성능이 좋지 않다고 생각하지 않습니까? –

+1

코드를 다시 사용하기 때문에 좋은 연습이 아닙니다. –

답변

7

나는 당신이 발신자로부터 중요한 정보를 숨기고 있기 때문에 좋은 생각이라고 생각하지 않습니다. int 오버로드 만 노출되는 경우 발신자는 doubleint으로 캐스팅하도록 선택할 수 있습니다. 이는 정수로 잘릴 것입니다. 그러나 명시 적으로 double 걸리는 과부하를 노출하는 경우, 나는 그 double 값이 잘리지 않고 추가 될 것으로 예상됩니다.

캐스팅시 정밀도가 떨어지면 을 명시 적으로으로 지정하고 오버로드 내부에 숨겨서는 안됩니다.

+0

나는 OP가'AddToTotal ((int) x);'가'total + = (int) x;'와 반대로 좋은 구현인지 묻고 있다고 생각했지만, 이것은 상관하지 않고 좋은 발언이다. – kajacx

관련 문제