2013-03-29 442 views
3
var versionNo = new System.Version("2.01"); 

我得到的值是versionNo = 2.1,但我想要它作爲2.01如何防止System.Version刪除前導零?

有什麼建議嗎?

+7

是什麼01和1之間的區別? – Steve

+0

_「我得到的價值......」:你能更精確一點嗎?請顯示將'versionNo'轉換爲字符串'「2.1」'的代碼。 – stakx

回答

9

這就是system.Version的工作原理 - 它將版本的組件作爲單獨的整數存儲,因此2.012.1之間沒有區別。如果您需要來顯示它的方式,你可以將其格式化爲:

Version versionNo = new Version("2.01"); 
string s = string.Format("{0}.{1:00}",versionNo.Major, versionNo.Minor); 

爲了方便,你還可以創建一個擴展方法:

public static string MyFormat(this Version ver) 
{ 
    return string.Format("{0}.{1:00}",ver.Major, ver.Minor); 
} 

這樣,你還可以自定義顯示同時保留Version類的可比性。

6

System.Version的每個組件是一個int,所以也沒有墊0。你可以有一個主要,次要,並建立:

Version versionNo = new Version("2.0.1"); 

導致

Version = 2.0.1 

但通常,01和1是等效的。如果你想專門擁有版本0填充的任何組件,我建議你覆蓋版本的ToString方法或者創建一個擴展方法(如D Stanley所述),或者使用不同的類型。

+0

你:_I建議你重寫版本的ToString方法,但是請注意,'System.Version'是一個'sealed'類。所以你不能在技術上'覆蓋',因爲你不能從類派生。當然,你可以編寫一個包裝'System.Version'的類。 –

+0

@JeppeStigNielsen啊,你是對的。謝謝。 – xdumaine

1

如果您的版本是2.01,那意味着您的MinorVersion01

這一點,你不得不padMinorVersion,做輸出:

string version = version.Major.ToString() + version.Minor.ToString("D2");