2009-05-23 34 views
6

我是C#開發人員在一個VB.NET工程工作,並不斷VS試圖讓我使用:當我調用一個函數與ByRef參數,像這樣=的thingie::=語法的用法是什麼?

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

的HydrateBookFromReader函數具有以下簽名:

Public Function HydrateBookFromReader(ByRef reader As SqlDataReader) As Book 

爲什麼智能感知堅持使用:=構造,它是幹什麼用的?

回答

10

在VB中,:=用於指定命名參數。

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

這對指定可選參數特別有用。

+0

正是我尋找的答案!謝謝。其他答案也非常有幫助和內容豐富,但關注問題 – 2009-05-23 20:29:38

+0

yw的其他方面。有點難以谷歌標點符號。當他們在下一個版本中將它添加到C#中時,它將只是沒有等號的冒號。當我們切換語言時,只是爲了保持我們的腳趾頭。 – DOK 2009-05-23 20:41:25

+1

我只是補充說,這在處理一個有很多可選參數的方法時特別有用。您在調用Office API時看到了這一點 - 有些API有15個可選參數,並且通過名稱指定參數比省略所有位置參數更方便。 (這就是爲什麼C#添加了該功能的原因。) – panopticoncentral 2009-05-26 16:59:25

4

爲什麼intellisense堅持我堅持使用:=施工,它是什麼?

需要注意的是IntelliSense不堅持是很重要的,它提出。在你的情況下使用它是沒有意義的......這個特性主要用於很長的參數列表和許多可選參數,其中你只想傳遞最後一個參數。使用Microsoft Office Interop時非常有用。

另外(因爲你在你的標籤中提到它):這與ByRef沒有任何關係。 ByRef相當於C#中的refout,即它允許該方法操縱參數本身。

1

智能感知可能會提示:=語法,但我懷疑它會在沒有它的情況下編譯。

HydrateBookFromReader(myReader); 

在可選參數允許的C#未來的版本中,命名的參數將允許你指定一些參數,而不是其他人,而且比他們被宣佈以不同的順序指定參數。命名參數還允許您選擇性地闡明傳入參數的目的,從而在某些情況下使代碼更具可讀性。

命名參數在COM Interop的c#4.0中尤爲重要,其中可以消除許多多餘的參數。

Anders Hejlsberg在第9頻道有關C#的未來的極好的討論http://channel9.msdn.com/pdc2008/TL16/。他對討論命名參數的討論時間是40分45秒。