这可以解释为 C# 中的调用表达式吗?

Can this be interpreted as an invocation expression in C#?

根据C#语法,可以这样写

(A)(B)

可以解释为调用表达式或类型转换。 有人可以提供一个将这种情况解释为调用表达式的有效 C# 示例吗?

这是我指的语法规则:

invocation-expression:
    primary-expression   (   argument-list?   )

primariy-expression可以是括号表达式。

像这样?

((Action<string>)Console.WriteLine)("test");

或者这个,作为一个表达式:

((Func<int>)Console.Read)()

编辑: 我怀疑是否有办法让 primary-expression 成为一个简单的标识符,因为它总是被解析为强制转换(甚至 (writeLine)() ),但这没什么大不了的,因为您始终可以删除括号。

似乎Visual Studio抱怨这个:(TestMethod)();

但这被评估为一个函数调用(假设 TestMethod 是一个方法):(this.TestMethod)();

除非 TestMethod 是静态的,在这种情况下甚至 (MyClass.TestMethod)(); 也不起作用。

我认为这是因为像 this.TestMethod 这样的东西明确地评估了一个方法组。没有 this.anything 会评估为类型的情况。但是 classname.something 可能是嵌套类型,也可能是静态方法,所以 VS 似乎将其解释为类型。