2014-12-18 3 views
0

두 개의 Version 개체 (2.2.0.59 ~ 2.1.0.60)를 비교 중이며 CompareTo이 잘못된 것 같습니다.Version.CompareTo가 잘못되었습니다.

내 코드 :

Version curVersion = new Version("2.2.0.59"); 
Version newVersion = new Version("2.1.0.60"); 

void test(){ 
    if(curVersion.CompareTo(newVersion) < 0){ 
     Console.WriteLine("New Update Available"); 
    } 
} 

그리고는 true if 문 반환. 중요성의 내림차순으로 버전의

msdn에서 구성 요소는 다음과 같습니다 사소한, 전공, 구축 및 개정.

newVersion.Minor < curVersion.Minor 이후로 compareTo은 값> 0을 반환하지 않아야합니까?

+1

다른 생성자를 사용해 보셨습니까? 'Version (Int32, Int32, Int32, Int32)'?? http://msdn.microsoft.com/en-us/library/system.version%28v=vs.110%29.aspx –

+0

[틀림없이 '거짓입니다.] (http://ideone.com/OOgQ0f) – Ryan

답변

1

documentation은 현재 버전이 CompareTo()에 대한 매개 변수로 전달 된 버전보다 클 경우 반환 값이 1임을 분명하게 나타냅니다.

curVersion.CompareTo(newVersion)에서 현재 버전보다 newVersion (인해 Minor 필드 차이)이다 curVersion이므로 반환 값 1이다.

또는, 당신은 또한 더 읽기 확인을 위해

if (newVersion > curVersion) 
{ 
    // There's a newer version available, do your magic 
} 

를 사용할 수 있습니다. 이 결과는 CompareTo() (동일한 확인)과 동일한 결과를 반환하지만 이해하기 쉽습니다.