C# to VB - TrimStart Behavior

本文关键字:TrimStart Behavior VB to | 更新日期: 2023-09-27 17:55:58

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

C# to VB - TrimStart Behavior

您在 VB 项目中没有打开选项严格。

我可以判断,因为test.TrimStart("DDN")打开时不会编译。这是因为正如您正确指出的那样TrimStart需要一个显式 char 数组(或单个 char

当你在选项 Strict Off 的情况下运行它时会发生什么,编译器将StringDDN ) 强制转换为单个字符 ( D )(这是 Option Strict 明确禁止的隐式缩小转换),这就是为什么你得到 N8057 作为你的输出。

你会认为,因为字符串只是一个字符数组,它会将其转换为数组,但事实并非如此 - 它有效地执行CChar("DDN")

结论

选项严格打开 = 良好。以下是默认情况下打开它的方法: 选项在 VB.NET 中默认严格打开