将方法应用于文字

Apply method to literal

我熟悉 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 中的垃圾,我必须先将其存储在变量中, 但我肯定在这里遗漏了一些东西......不?

P.S。字符串周围的括号没有任何效果。

问题不在于您不能对文字调用方法。问题是您不能以文字开始一行代码,就像您不能以 New 关键字开始一行代码一样。如果你这样做:

Dim x = "Hello".Split("l"c)
Dim y = 2.ToString()

它可以正常工作。如果你这样做:

"Hello".Split("l"c)
2.ToString()

您遇到两个错误,在这两种情况下,将鼠标悬停在问题上会告诉您:

Only member access expression can start an invocation statement.

就像你想用构造函数开始一行一样,你可以使用 Call 关键字来有效地做你想做的事:

Call "Hello".Split("l"c)
Call 2.ToString()