Какая польза от синтаксиса:=?

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

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

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

Public Function HydrateBookFromReader(ByRef reader As SqlDataReader) As Book

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

3 ответа

Решение

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

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

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

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

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

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

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

HydrateBookFromReader(myReader);

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

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

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

Другие вопросы по тегам