为什么我不能在VB.NET中使用“新”表达式作为语句?

时间:2010-12-24 19:30:48

标签: .net vb.net syntax

为什么我不能使用括号后跟关键字new来开始一行?例如:

(New <custom_obj>).foo(var)

在这种情况下显而易见的是,我试图避免创建&lt; custom_obj&gt;的命名实例。因为我知道我只会在那句话中使用它。

请注意,实际创建命名实例对我来说不是问题...我只是想知道为什么这不可能。

1 个答案:

答案 0 :(得分:4)

您想要语言律师回答吗?从10. Statements开始,查看VB.NET语言规范。最简单的答案是“表达式”一词不会出现在该页面上。 NewExpression明确区别于InvocationExpression,因此您可以在InvocationStatement中使用InvocationExpression,但是您只能在LocalDeclarationStatement中或在某些更大表达式的上下文中使用NewExpression。

更为谨慎的是,VB.NET语法的设计易于阅读,编写和解析,而实现这一目标的一种方法是小心什么是Statement,什么是Expression。 Python类似 - 赋值是一个语句而不是一个表达式。没有理由让每种语言都像C一样。

但是,正如chibacity指出的那样,你可以使用Call语句解决这个问题:

call new object.toString

将成功编译。试着让你的课堂变得有意义。