문제

대부분의 시간을 우리는 개념을 나타낼 수 있는 않을 것보다 적은 0 입니다.예를 들어를 선언의 길이,우리가 쓰기:

int length;

이름을 표현하는 그 목적을 잘 하지만 당신은 음의 값을 할당 할 수 있습니다.그것은 보인다는 일부 상황의 경우,당신은 나타낼 수 있는 당신의 의도가 더 명확하게 작성하여 그것을 이 방법 대신:

uint length; 

일부를 불리는 생각할 수 있:

  • 서명되지 않은 유형(uint,ulong,ushort)되지 않 CLS 준수하므로 사용할 수 없습니다 그것은 다른 언어로 지원하지 않는 이
  • .Net 클래스를 사용하여 서명된 유형의 대부분의 시간을 캐스팅

생각?

도움이 되었습니까?

해결책

"때에 로마,로마인과 같이 하는 일입니다."

이 있는 동안에는 이론적 이점을 사용하여 서명되지 않은 값이 적용되기 때문에 그것은 코드를 더욱 표현,이것은 단순히 수행되지 않습니다.나는 확실하지 않다는 이유 처음의 개발자들이지 않았 디자인 인터페이스 처리 uints 고 형식 CLS 규격지만 지금은 기차가 역을 떠났습니다.

때문에 일관성은 일반적으로 중요 나는 조언 C#도로 및 사용 ints.

다른 팁

는 경우에 당신을 감소시키고 서명한 수의 값을 0 으로,그것은 부정적이고 쉽게 테스트할 수 있습니다.면 당신이 감소되수의 값을 0 으로,그것은 언더플로우가 되는 최대 값을 입력-약간 더 어려운을 확인한다.

당신의 두 번째로 가장 중요합니다.일반적으로 당신은 단지 사용 int 이후 그것은 꽤 좋은"catch-all"을 위해 정수의 값이다.나는 단지 사용 uint 당신이 절대적으로 필요한 능력을 높 계산 int, 지만,사용하지 않고 추가 메모리 long 필요(그것은 훨씬 더 많은 메모리다,그래서 저렴한하지 마십시오:-p).

내가 생각하는 미묘한 사용 uint 대int 는 원인이 될 것이 혼란 개발자들과하지 않는 한 작성되었으로 개발자 지침에 대한 액세스를 제공합니다.

면 길이,예를 들어,보다 작을 수 없습니다로 다음을 표현해야 하는 명확하게 비즈니스에서 논리 그래서 미래 개발할 수 있는 코드를 읽고 모르는 의도입니다.

내 2 센트입니다.

나이는 점에서 C#할 수 있습 켜 /checked 을 확인에 대한 연산 오버플로/저류지 않는 나쁜 생각입니다.는 경우에는 성능 문제에서 중요한 섹션을 계속 사용할 수 있습니다 unchecked 이를 방지하기 위해.

에 대한 내부 코드(코드는지에서 참조하는 모든 interop 매너와 다른 언어)나는 투표를 사용하여 서명되지 않은 경우 상황 등 length 변수로 언급했다.이와 함께 확인 산술을 제공 하나 더 net 개발자를 위한 잡기한다.

또 다른 점에서 서명된 대 unsigned 토론에는 어떤 프로그래머가 사용할 값을 등 -1 을 나타내는 오류를 때,그들은 그렇지 않으면 의미가있다.하고 구독하기는 각 변수해야만 하나의 목적지만,경우-또는 동료에게 코드와 같은 오류를 나타내기 위해 이 방법으로,떠나는 변수 서명한 유연성을 제공합을 추가하는 오류 상태다.

당신의 두 점은 좋습니다.기본 이유로 그것을 피하는 것은 주물,하지만.주조 그들이 믿을 수 없을만큼 기능을 가장 빠르고 편리하게 사용할.용 unisigned 변수단지를 뿌려 절대적으로 캐스팅 어디서나기 때문에 프레임워크 방법을 모두 사용하여 서명된 정수입니다.따라서,를 호출할 때마다 프레임워크 방법은,당신이 든다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top