uint와 ulong의 기본 컨텍스트가 음수가 될 수없는 값을 나타 내기위한 것이라는 점을 고려하지 않은 것이 이상하다는 것을 알게된 사람이 있습니까?C#에서 체크 된 문맥에서 unsigned int/long이 항상 실행되도록 만들기
그래서 어떤 코드가 그 제약 조건을 위반하려고한다면 자연스러운 동작은 중요한 값 대신에 최대 값을 반환하는 대신 예외를 throw하는 것입니다 (이는 중요한 상태의 데이터를 쉽게 남겨 둘 수 있습니다. 되 돌리는 것은 불가능하다. ..).
클래스/어셈블리에 적용 할 수있는 기존 특성이 있으므로 항상 체크 된 컨텍스트에서 산술 연산을 수행합니까? 나는 자신을 (PostSharp를 사용하는 양상으로) 쓰기를 생각하고 있었지만, 이미 하나가 있다면 좋을 것입니다.
많은 감사,
은 부호가있는 정수에 대한 귀하의 요점에 완전히 동의합니다.이 언더 플로우 처리의 기본 동작은 이상하게 보입니다. 왜 이런 방식으로 설계 되었습니까? 점검을 통해 전체 어셈블리를 컴파일하는 팁을 주셔서 감사합니다. 정확히 내가 한 것입니다! :-) – theburningmonk
@theburningmonk : 나는 체크 된 구현보다 훨씬 더 나은 성능을 발휘하기 때문에 기본값이 선택되었다고 생각합니다. 해시 코드 계산을 위해 체크되지 않은 블록을 원할 것입니다. 실제로는 크기가 중요하지 않은 비트 패턴입니다. –