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

7
var versionNo = new System.Version("2.01");

我得到的值是versionNo = 2.1,但我希望它是2.01。有什么建议吗?

7
01和1的区别是什么? - Steve
“我正在获取值…”:请问您能更加精确一些吗?请展示将 versionNo 转换为字符串 "2.1" 的代码。 - stakx - no longer contributing
3个回答

13

这就是 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类的可比性的同时,仍然可以自定义display


7

System.Version的每个组件都是一个整数,所以它不会填充0。你可以有一个主版本号、次版本号和构建版本号:

Version versionNo = new Version("2.0.1");

这导致
Version = 2.0.1

但通常情况下,01和1是等价的。如果您想要特别填充版本0的任何组件,我建议您创建一个扩展方法(由D Stanley提到),或使用不同的类型。


我建议您重写版本的ToString方法,但请注意,System.Version是一个sealed类,因此您无法从该类派生,也就无法在技术上进行“override”。当然,您可以编写一个包装System.Version的类。 - Jeppe Stig Nielsen

1
如果您的版本是2.01,那么您的MinorVersion就是01
要输出它,您需要对MinorVersion进行填充,方法如下:
string version = version.Major.ToString() + version.Minor.ToString("D2");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接