C#到VB - TrimStart行为

时间:2016-07-08 15:11:20

标签: c# vb.net string trim

我有最简单的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数组(这是真的吗?),但为什么输出中存在差异?

1 个答案:

答案 0 :(得分:3)

您的VB项目中未启用Option Strict。

我可以判断,因为test.TrimStart("DDN")在启用时无法编译。这是因为正确指出TrimStart需要一个显式的 char数组(或一个 char

使用Option Strict Off运行此操作时会发生什么情况编译器会将StringDDN)强制转换为字符(D)(此是一个隐式的缩小转换,Option Strict明确禁止)这就是你输出N8057的原因。

你会认为,作为一个字符串只是一个char数组,它会将它转换为一个数组,但它没有 - 它有效地执行CChar("DDN")

<强>结论

Option Strict On =好。以下是默认情况下启用它的方法:Option Strict on by default in VB.NET