2010-06-03 3 views
0

가능한 중복은 : C#에서 음수가 아닌 값으로 uint 또는 int를 사용해야합니까?


Should I use uint in C# for values that can’t be negative?

MaxValue (대략 :)) 2^31 대 2^32가 문제가되지 않는 것으로 가정한다. 한편, uint을 사용하는 것은 그 자체로 설명하기 쉽기 때문에 좋을 것입니다. 어떤 값은 결코 음수가 아닐 수도 있음을 나타냅니다. 그러나 int이 더 일반적이며 캐스트는 종종 불편합니다. int를 사용할 수 있으며 항상 코드 계약으로 보완 할 수 있습니다. (현재 모두 .Net 4.0으로 옮겨졌습니다.) 표준 라이브러리는 부정적인 결과를 내지 않아도 LengthSize 속성에 int을 사용합니다. 따라서 대부분의 경우 intuint보다 낫다는 점은 분명합니까 아니면 더 복잡합니까?

이 질문에 명확한 언급이없는 경우 질문을하십시오.

감사합니다.

편집 : 그래, 속은 것처럼 보입니다. 그러나, 그리고 작은 질문 : 당신이 나에게 코드 계약/assert 문을 속성/기능을 보완하는 좋은 예를 들어 줄 수 있습니까?이 특별한 경우에는 값이 음수가 아닐 수도 있습니다.

답변

2

짧은 대답은 아니오입니다. 다음과 같이 구현할 수 있습니다.

private int _length; 
public int Length 
{ 
    get { return _length; } 
    set 
    { 
     if (value < 0) 
     { 
      throw new InvalidOperationException("Length must be always positive. Please make sure the value is positive value."); 
     } 
     this._length = value; 
    } 
}