问题描述
我熟悉 C#,但完全不熟悉 VB,我想将 C# 示例(在 LINQPad 中)转换为 VB:
if (2 + 2 == 4)
"True".Dump();
我想出了以下可用的 VB 代码:
Dim word = "True"
If 2 + 2 = 4 Then
word.Dump
End If
现在,为什么我不能只写以下内容?
If 2 + 2 = 4 Then
"True".Dump ' BC30035 Syntax error
End If
似乎我无法将方法应用于 VB 中的文字,我必须先将其存储在变量中, 但我肯定在这里遗漏了什么......不是吗?
附言字符串周围的括号不起作用。
解决方法
问题不在于您不能对文字调用方法。问题是您不能以文字开始一行代码,就像您不能以 New
关键字开始一行代码一样。如果你这样做:
Dim x = "Hello".Split("l"c)
Dim y = 2.ToString()
它可以正常工作。如果你这样做:
"Hello".Split("l"c)
2.ToString()
您会收到两个错误,在这两种情况下,将鼠标悬停在问题上会告诉您:
只有成员访问表达式才能启动调用语句。
就像您想用构造函数开始一行一样,您可以使用 Call
关键字来有效地执行您想要的操作:
Call "Hello".Split("l"c)
Call 2.ToString()