2012-09-18 3 views
1

다른 시스템에서 다른 데이터 유형을 읽으므로 소수를 사용하는 반올림 오류가 있습니다. 그래서 10 진수 타입에 + 연산자를 오버로드하는 것이 가능한지 궁금합니다. 내가 본 모든 예제는 새로운 정의 된 구조체에 있습니다.10 진수 형식의 + 연산자를 오버로드 할 수 있습니까?

+1

내 마음의 무언가가 "이게 올바른 접근이 아니야"라고 잔소리를하고 있습니다. "다른 시스템에서 다른 데이터 유형을 읽었 기 때문에"진술을 명확히 할 수 있습니까? 당신이 과부하를 + 후회하게 될 가능성을 고려해보십시오. 특히 구현 과정에서 두 개의 십진법을 추가 할 필요가있는 경우에 고려하십시오. 또한 현재 사용중인 .NET 버전/버전과 관련된 동작에 의존 할 가능성도 고려하십시오. –

답변

4

아니요 decimalvalue type이므로 상속 될 수 없습니다. 이 방법 이외의 반올림을 수정해야합니다 (예 : 확장 메소드).

public static decimal Add(this decimal value, ...) 
{ 
    ... do manual calculation & rounding 
} 
3

할 수 있습니다 만 과부하 클래스/구조체의 정의 내부 클래스/구조체에 대한 사업자, 그래서 당신이 decimal 유형의 기본 + 동작을 재정의 할 수있는 방법은 없습니다.

이상적으로 원본에서 반올림 오류를 해결하기 위해 일종의 래퍼를 작성하는 것이 좋습니다.

관련 문제