Хотите ответ от адвоката? Посмотрите в Спецификации языка VB.NET, начиная с 10. Заявления . Самый простой ответ заключается в том, что слово «Выражение» не появляется на этой странице. NewExpression явно отличается от InvocationExpression, поэтому вы можете использовать InvocationExpression в InvocationStatement, но вы можете использовать NewExpression только в LocalDeclarationStatement или в контексте некоторого большего выражения.
Скорее всего, синтаксис VB.NET разработан так, чтобы его было легко читать, писать и анализировать, и одним из способов достижения этого является осторожность в отношении того, что такое оператор и что такое выражение. Python похож - присваивание является оператором, а не выражением. Нет причин для того, чтобы каждый язык был в точности как C.
Но , как указывает chibacity, вы можете обойти это с помощью оператора Call
:
call new object.toString
успешно скомпилируется. Вместо этого попытайтесь придать смысл своим занятиям.