版本的字符串插值

String Interpolation Of Version

我一直在将一些代码转换为使用字符串插值而不是连接,但遇到了 Version 属性.

异常

这按预期工作:

Dim CurrTime As String = $"Current time is {Now:HH:mm:ss}" (eg Current time is 23:22:21)

但事实并非如此:

Dim Ver As String = $"Version is {myAssembly.GetName().Version:3}"

如果 Version 是 1.2.3.4,Ver 仍然解析为“版本是 1.2.3.4”,而不是我期望的“版本是 1.2.3”。

我是不是误解了它的工作原理?显然,这没什么大不了的,我只是一头雾水。

复合格式中使用的 :formatString 部分(例如,使用字符串插值或 String.Format()ToString() 做的所有事情.前者只支持某些类型。如果您查看 Structure of an interpolated string 的文档,您会看到 formatString 元素的描述是:

A format string that is supported by the type of the expression result. For more information, see Format String Component.

如果您遵循 link,它会将您带到复合格式的文档,您可以在其中阅读有关支持的类型的更多信息:

The optional formatString component is a format string that is appropriate for the type of object being formatted. Specify a standard or custom numeric format string if the corresponding object is a numeric value, a standard or custom date and time format string if the corresponding object is a DateTime object, or an enumeration format string if the corresponding object is an enumeration value. If formatString is not specified, the general ("G") format specifier for a numeric, date and time, or enumeration type is used. The colon is required if formatString is specified.

作为解决方法,您可以将 String.Format() 与字符串插值结合使用:

Dim Ver As String = $"Version is {myAssembly.GetName().Version.ToString(3)}"

或者只是恢复到这个特定案例的串联。