VB.NET,两种传递数组作为参数的方式是一样的吗?

时间:2016-02-19 11:42:52

标签: arrays vb.net syntax parameter-passing

一个让我困惑的问题:

在VB.NET中,当声明一个接受数组作为参数的Function(或Sub)时,可以写一个:

Sub func(par as integer())

或:

Sub func(par() as integer)

那么,par as integer()是否与par() as integer完全相同,即使我向他们添加了各种装饰(例如Byval)?

我用Google搜索并在MSDN上找到了this page,它似乎使用了第二个。

我还尝试编写一些测试函数,这也表明没有区别。

但是有一个确认或反例会很高兴。谢谢!

更进一步,par as integer()()par() as integer()par()() as integer是否也相同?

1 个答案:

答案 0 :(得分:4)

VB.NET编译器不关心你选择哪个版本,两者都同样有效。只需使其保持一致,因此它始终与代码的读者看起来相同。并且考虑到你喜欢它和VS一样,所以完全一致。与对象浏览器和智能感知一样,他们喜欢par as Integer()风格。

但请注意当您想直接声明数组大小时会遇到的问题:

Dim a(3) As Integer         '' Okay, array with 4 elements
Dim a As Integer(3)         '' Not happy, BC30638
Dim b As SomeType(3)        '' Not happy, constructor call requires New

Basic语法中的括号做了太多工作。