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

为什么我不能使用括号后跟关键字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

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

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...