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