这行 VB.NET 代码是如何工作的?

How does this line of VB.NET code work?

我正在使用 VB.NET 和 String.Format。

下面的代码行用 20 space 个字符填充 s。问题是我不知道它是如何工作的,也找不到解释。参考:MSDN String.Format Method.

Dim s As String = String.Format("{0, 20}", String.Empty)

它给了我需要的结果,一个由 20 space 个字符填充的字符串,但是“0”是什么?如果我将其更改为任何其他数字,则会产生错误。

而且我看不到它在哪里/如何指定 Space 字符?

第一个参数中的0是参数的索引。

该方法的签名是String.Format(string format, object[] params)

所以"{0, 20}"就是要格式化的字符串,其他都变成对象数组。

零是您要发送的参数的索引,在您的情况下 String.Empty

格式说明符 {0, 20} 表示它将把您的对象 string.Empty 作为元素 {0} 放在一个空的 20 个字符字符串的末尾。我的意思是您的项目将用于填充 20 个字符的字符串的右侧,其余部分将被填充。由于您使用的是 string.Empty ,因此您会得到一个完全空白的字符串。尝试添加 z 并将数字更改为负数。

string.Format("{0, -10}", "z");

这应该给你一个 10 个字符的字符串,以 z 开头并填充 spaces。这是 string.Format 的默认行为,在格式化自定义数字时最常使用。 space 不需要作为命令的一部分包含在内,因为您的说明符表明您需要 20 个字符的结果字符串,这被认为是预期的。 Space 似乎是最符合逻辑的插入默认字符。

如果您使用像这样的复杂字符串:

string.Format("{0, 10}", "abc");

你应该仍然得到一个 10 个字符的字符串,但它看起来像

"       abc"