vb.net – VB Like运算符与Operators.LikeString()不同
发布时间:2020-12-17 00:18:51 所属栏目:大数据 来源:网络整理
导读:为什么在下面的示例中第一个(x)为真,第二个(y)为假? 我想在C#中使用类似VB的运算符. Dim x = "abc@symas-design.ch" Like "*symas-design.ch"Dim y = Microsoft.VisualBasic.CompilerServices.Operators.LikeString("abc@symas-design.ch","*symas-design.c
为什么在下面的示例中第一个(x)为真,第二个(y)为假?
我想在C#中使用类似VB的运算符. Dim x = "abc@symas-design.ch" Like "*symas-design.ch" Dim y = Microsoft.VisualBasic.CompilerServices.Operators.LikeString("abc@symas-design.ch","*symas-design.ch",CompareMethod.Text)
Like运算符显然不使用Operators.LikeString,而是使用LikeOperator.LikeString.
我试过这个LINQPad程序: Sub Main Dim x = "abc@symas-design.ch" Like "*symas-design.ch" Dim y = Microsoft.VisualBasic.CompilerServices.Operators.LikeString("abc@symas-design.ch",Microsoft.VisualBasic.CompareMethod.Text) x.Dump() y.Dump() End Sub 它显示: True False 正如你所说,他们不会这样做,但后来我展示了IL生成: IL_0000: ldstr "abc@symas-design.ch" IL_0005: ldstr "*symas-design.ch" IL_000A: ldc.i4.0 IL_000B: call Microsoft.VisualBasic.CompilerServices.LikeOperator.LikeString IL_0010: stloc.0 // x IL_0011: ldstr "abc@symas-design.ch" IL_0016: ldstr "*symas-design.ch" IL_001B: ldc.i4.1 IL_001C: call Microsoft.VisualBasic.CompilerServices.Operators.LikeString IL_0021: stloc.1 // y IL_0022: ldloc.0 // x IL_0023: call LINQPad.Extensions.Dump IL_0028: pop IL_0029: ldloc.1 // y IL_002A: call LINQPad.Extensions.Dump 似乎他们正在调用不同的方法,所以我尝试了这个: Sub Main Dim x = "abc@symas-design.ch" Like "*symas-design.ch" Dim y = Microsoft.VisualBasic.CompilerServices.Operators.LikeString("abc@symas-design.ch",Microsoft.VisualBasic.CompareMethod.Text) Dim z = Microsoft.VisualBasic.CompilerServices.LikeOperator.LikeString("abc@symas-design.ch",Microsoft.VisualBasic.CompareMethod.Text) x.Dump() y.Dump() z.Dump() End Sub 我得到了: True <-- Like operator False <-- Operator.LikeString True <-- LikeOperator.LikeString 所以你需要使用LikeOperator.LikeString. 这是一个C#LINQPad程序,演示: void Main() { bool z = LikeOperator.LikeString("abc@symas-design.ch",Microsoft.VisualBasic.CompareMethod.Text); z.Dump(); } 哪个也输出True. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |