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 数组(这是真的吗?),但为什么我的输出存在差异?
您在 VB 项目中没有打开选项严格。
我可以判断,因为test.TrimStart("DDN")
打开时不会编译。这是因为正如您正确指出的那样TrimStart
需要一个显式 char 数组(或单个 char)
当你在选项 Strict Off 的情况下运行它时会发生什么,编译器将String
( DDN
) 强制转换为单个字符 ( D
)(这是 Option Strict 明确禁止的隐式缩小转换),这就是为什么你得到 N8057
作为你的输出。
你会认为,因为字符串只是一个字符数组,它会将其转换为数组,但事实并非如此 - 它有效地执行CChar("DDN")
!
结论
选项严格打开 = 良好。以下是默认情况下打开它的方法: 选项在 VB.NET 中默认严格打开