Какая польза от синтаксиса: =? - PullRequest
6 голосов
/ 24 мая 2009

Я разработчик C #, работающий над проектом VB.NET, и VS продолжает пытаться заставить меня использовать: = thingie, когда я вызываю функцию с параметром ByRef, например:

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

функция HydrateBookFromReader имеет следующую подпись:

Public Function HydrateBookFromReader(ByRef reader As SqlDataReader) As Book

Почему intellisense настаивает на том, чтобы я использовал это: = конструкция и для чего она нужна?

Ответы [ 3 ]

10 голосов
/ 24 мая 2009

В VB: = используется для указания именованных параметров.

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

Это особенно полезно для указания необязательных параметров.

4 голосов
/ 24 мая 2009

Почему intellisense настаивает на том, чтобы я использовал это: = конструкция и для чего она нужна?

Важно отметить, что IntelliSense не настаивает , он предлагает . Использование его в вашем случае не имеет смысла ... эта функция в основном используется для очень длинных списков параметров со многими необязательными параметрами, из которых вы хотите передать, скажем, последний. Это полезно при работе с Microsoft Office Interop.

Также (поскольку вы упоминаете об этом в своих тегах): это не имеет ничего общего с ByRef. ByRef эквивалентно ref и out в C #, то есть позволяет методу манипулировать самим параметром.

1 голос
/ 24 мая 2009

Intellisense может предлагать синтаксис: =, но я подозреваю, что он будет компилироваться без него.

HydrateBookFromReader(myReader);

В будущих версиях C #, где разрешены необязательные параметры, именованные параметры позволят вам указать некоторые параметры, но не другие, и указать параметры в другом порядке, чем они были объявлены. Именованные параметры также позволяют при желании уточнить назначение передаваемого параметра, что делает код более читабельным в некоторых случаях.

Именованные параметры будут особенно важны в c # 4.0 для COM Interop, где многие лишние параметры могут быть исключены.

У Андерса Хейлсберга отличное обсуждение будущего C # на канале 9 по адресу http://channel9.msdn.com/pdc2008/TL16/. Его обсуждение именованных параметров начинается через 40 минут и 45 секунд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...