C# 프로그래머는 어디에서나 int를 사용하는 경향이 있으며 드물게 uint에 의지하는 경향이 있습니다. 그러나 저는 왜 그런지에 대한 만족스러운 대답을 결코 발견하지 못했습니다.uint vs int를 사용하여
상호 운용성을 목표로하는 경우 모든 CLI 언어가 부호없는 정수를 지원하지 않으므로 uint가 공개 API에 나타나지 않아야합니다. 그렇다고해서 int가 내부 클래스 에서조차 왜 널리 퍼져 있는지 설명하지는 않습니다. 이것이 UCL이 BCL에서 드물게 사용되는 이유라고 생각됩니다.
음수 값이 의미가없는 정수가있는 경우 부호없는 정수를 선택합니다.
이것은 음수가 허용되거나 예상되지 않는다는 것을 분명히 나타내며 컴파일러는 사용자를 대신하여 검사를 수행합니다. 또한 배열 인덱스의 경우 JIT가 쉽게 하한 경계 검사를 삭제할 수 있다고 생각합니다.
그러나 int 및 unit 유형을 혼합 할 때는 특별한주의와 캐스트가 필요할 것입니다.
더 많은 것을 사용해야합니까? 왜?
http://stackoverflow.com/questions/6301/why-is-array-length-an-int-and-not-an-uint – drharris
나는 단지 deja vu : D, 거의 똑같은 질문을 가졌습니다. 짧은 시간 전에 물었다. – KroaX
하한 검사 (직접 작성해야하는 경우)는 if (i < 0 || i > = length)를 if (unchecked ((uint) i)> length)로 바꿀 수 있습니다. 결과로 나온 일리노이는 한 가지 (지사) 명령을 더 적게 가지며 거의 동일한 성능을 제공합니다 (훨씬 빨라짐). 개인적으로 나는 그것을 좋아한다. 왜냐하면 하한을 점검하는 것에 대한 나의 가려움증을 긁기 때문이다. 다른 사람들은 "확인되지 않음"으로 인해 그것을 반대 할 것 같지만, 나는 이것이 의미를 학습하기에 아주 좋은 선이라고 주장한다. 그 이유는 목적이 무엇인지 간단하고 즉각적으로 분명하므로 독자가 배우는 데 도움이된다. – AnorZaken