如何防止System.Version删除前导零?

Mar*_*s25 4 c#

var versionNo = new System.Version("2.01");
Run Code Online (Sandbox Code Playgroud)

我得到的值versionNo= 2.1,但我想要它2.01.

有什么建议吗?

D S*_*ley 10

这是system.Version有效的 - 它将版本的组件存储为单独的整数,因此2.01和之间没有区别2.1.如果您需要以这种方式显示它,您可以将其格式化为:

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

为方便起见,您还可以创建一个扩展方法:

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

这样,您仍然可以自定义显示,同时保留Version类的可比性.


xdu*_*ine 7

System.Version的每个组件都是一个int,所以它不会填充0.你可以有一个major,minor和build:

Version versionNo = new Version("2.0.1");
Run Code Online (Sandbox Code Playgroud)

结果

Version = 2.0.1
Run Code Online (Sandbox Code Playgroud)

但一般来说,01和1是等价的.如果你想特别填充版本0的任何组件,我建议你覆盖版本的ToString方法或创建扩展方法(如D Stanley所述),或使用不同的类型.