Что такое оператор ": =" в (VB) .NET или для чего он хорош? - PullRequest
12 голосов
/ 19 ноября 2008

Я вижу это время от времени и хочу знать, что это такое. Я попробовал Google, но он отфильтровывает символы из поиска. У меня есть несколько книг, которые тоже не ссылаются на это.

FWIW, я помню на паскале, который был оператором присваивания.

Кто-нибудь может указать мне на MSDN или похожую страницу?

Ответы [ 3 ]

28 голосов
/ 19 ноября 2008

Вы можете использовать синтаксис: = для назначения параметров для Sub или Function по имени, а не строго по положению. Например:

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TestRoutine(Y:="TestString", X:=12)
    End Sub

    Private Sub TestRoutine(ByVal X As Long, Optional Y As String = "")
        ' Do something with X and Y here... '
    End Sub

End Class

Обратите внимание, что TestRoutine указывает X в качестве первого параметра и Y в качестве второго, но вызов в Form1_Load имеет их в обратном порядке, присваивая имена каждому параметру с помощью оператора: =.

Вот ссылка на статью MSDN на эту тему:

http://msdn.microsoft.com/en-us/library/51wfzyw0.aspx

Я не вижу, чтобы это использовалось очень часто, кроме макросов VBA, сгенерированных устройством записи макросов Excel, которое использует его много .

11 голосов
/ 19 ноября 2008

Это действительно полезно, когда есть несколько необязательных параметров - вы видите, что в коде много объектов, вызывающих модели объектов office - Word, Excel и т. Д. Когда у вас есть 40 параметров, из которых 37 необязательных, и вы хотите установить значения для параметров 34 и 40 lot понятнее использовать: = чем иметь вызов функции, который выглядит как ("новый", "настройки", 1, ,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,, 43,, 2 ,,,,, 7)

Я хотел сделать это комментарием к Джеффу, но мне не хватает представителя.

4 голосов
/ 19 ноября 2008

VB использует этот оператор для присвоения значений атрибута:

http://www.ondotnet.com/pub/a/dotnet/excerpt/vbnut_8/index1.html

...