vb.net - 将方法应用于文字

标签 vb.net linqpad

我熟悉 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()

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

Only member access expression can start an invocation statement.

就像您想用构造函数开始一行一样,您可以使用 Call 关键字来有效地执行您想要的操作:

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

关于vb.net - 将方法应用于文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66117062/

相关文章:

linq - 使用 LINQ 从多行多列中获取最大值?

c# - 强制转换为无效枚举值 Enum.ToObject,不会引发异常,将 Enum 设置为 int

vb.net - 使用 VB.NET 更改桌面背景

正则表达式解析逗号分隔的键值对和值中的逗号

vb.net - Try/Catch 帮助,预计语句结束

javascript - 阻止用户查看 javascript 文件

c# - Linqpad 图表。 Column 和 StackedColumn 的组合

linq - 在 LINQPad 中使用数据上下文作为方法参数

c# - LINQPad:使用 (.NET4) VS2010 程序集时出现 "BadImageFormatException"?

c# - 如何在 VB.NET 中使用 RabbitMQ?