有什么用:=语法?

时间:2009-05-23 20:06:06

标签: vb.net syntax function language-features byref

我是一名从事VB.NET项目的C#开发人员,当我调用带有ByRef参数的函数时,VS一直试图让我使用:= thingie:

While reader.Read()
HydrateBookFromReader(reader:=???)

HydrateBookFromReader函数具有以下签名:

Public Function HydrateBookFromReader(ByRef reader As SqlDataReader) As Book

为什么intellisense一直坚持我使用它:=构造,它的用途是什么?

3 个答案:

答案 0 :(得分:10)

在VB中,:=用于指定命名参数。

Contact(Address:="2020 Palm Ave", Name:="Peter Evans")

这对于指定可选参数特别有用。

答案 1 :(得分:4)

  

为什么intellisense一直坚持我使用它:=构造,它的用途是什么?

重要的是要注意IntelliSense不坚持,它提议。在你的情况下使用它是没有意义的...这个功能主要用于很长的参数列表,有许多可选参数,你只想通过,比如最后一个。在使用Microsoft Office Interop时非常有用。

另外(因为你在标签中提到它):这与ByRef无关。 ByRef相当于C#中的refout,即它允许该方法操纵参数本身。

答案 2 :(得分:1)

Intellisense可能会建议:=语法,但我怀疑它会在没有它的情况下编译。

HydrateBookFromReader(myReader);

在允许使用可选参数的C#的未来版本中,命名参数将允许您指定一些参数而不指定其他参数,并以与声明的顺序不同的顺序指定参数。命名参数还允许您有选择地阐明传入参数的目的,使代码在某些情况下更具可读性。

在COM Interop的c#4.0中,命名参数尤为重要,可以消除许多多余的参数。

Anders Hejlsberg在http://channel9.msdn.com/pdc2008/TL16/对第9频道的C#的未来进行了精彩的讨论。他关于命名参数的讨论是在谈话的40分45秒。