我有最简单的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数组(这是真的吗?),但为什么输出中存在差异?
答案 0 :(得分:3)
您的VB项目中未启用Option Strict。
我可以判断,因为test.TrimStart("DDN")
在启用时无法编译。这是因为正确指出TrimStart
需要一个显式的 char数组(或一个 char )
使用Option Strict Off运行此操作时会发生什么情况编译器会将String
(DDN
)强制转换为单字符(D
)(此是一个隐式的缩小转换,Option Strict明确禁止)这就是你输出N8057
的原因。
你会认为,作为一个字符串只是一个char数组,它会将它转换为一个数组,但它没有 - 它有效地执行CChar("DDN")
!
<强>结论强>
Option Strict On =好。以下是默认情况下启用它的方法:Option Strict on by default in VB.NET