【发布时间】:2016-11-11 05:19:36
【问题描述】:
我有最简单的VB代码:
Dim test As String = "DDN8057"
Console.WriteLine(test.TrimStart("DDN"))
给我
N8057
为什么?将其转换为 C#(我更熟悉),让我意识到 TrimStart 实际上需要 params char[],但正在运行
Console.WriteLine("DDN8057".TrimStart("DDN".ToCharArray()));
给了我我的期望
8057
所以,我猜 VB 能够在内部将字符串视为 char 数组(这是真的吗?),但为什么我的输出会出现差异?
【问题讨论】:
-
在 VB 中使用
{"D"c, "D"c, "N"c}或"DDN".ToCharArray可以得到预期的输出。当它需要一个 char 数组时传递一个字符串不会按预期工作。它只取字符串的第一个字母并忽略其余部分。将第二个 D 替换为任何其他字符以检查这一点 -
如果您切换 Option Strict On(并且您应该始终打开它) - 那么
test.TrimStart("DDN")将无法编译 - 出于您解释的原因