为什么我不能使用括号后跟关键字new来开始一行?例如:
(New <custom_obj>).foo(var)
在这种情况下显而易见的是,我试图避免创建< custom_obj>的命名实例.因为我知道我只会在那句话中使用它.
请注意,实际创建命名实例对我来说不是问题…我只是想知道为什么这是不可能的原因.
解决方法
你想要一位语言律师回答吗?查看VB.NET语言规范,从
10. Statements开始.最简单的答案是“表达式”一词不会出现在该页面上. NewExpression与InvocationExpression明确不同,因此您可以在InvocationStatement中使用InvocationExpression,但是您只能在LocalDeclarationStatement中或在某些更大表达式的上下文中使用NewExpression.
更方便的是,VB.NET语法设计为易于阅读,编写和解析,其中一种方法是通过小心什么是Statement和什么是Expression. Python是类似的 – 赋值是一个语句而不是表达式.没有理由让每种语言都像C一样.
但是,正如chibacity指出的那样,你可以使用Call语句解决这个问题:
call new object.toString
将成功编译.试着让你的课堂变得有意义.