VB.NET оператор перегрузки ()

Я новичок в VB.NET и найдите метод для копирования поведения DataRow, например. В VB.NET я могу написать что-то вроде этого:

Dim table As New DataTable
'assume the table gets initialized
table.Rows(0)("a value") = "another value"

теперь, как я могу получить доступ к члену мой класс со скобками? Я думал, что могу перегрузить оператор (), но это, похоже, не ответ.

1 ответов


это не оператор перегрузки, это известно как свойство по умолчанию.

"класс, структура или интерфейс может назначить не более одного из своих свойств свойством по умолчанию, при условии, что свойство принимает по крайней мере один параметр. Если код делает ссылку на класс или структуру без указания члена, Visual Basic разрешает эту ссылку на свойство по умолчанию."- MSDN -

и DataRowCollection класс и DataRow класс имеет свойство по умолчанию с именем Item.

            |       |
table.Rows.Item(0).Item("a value") = "another value"

это позволяет писать код без указания Item участники:

table.Rows(0)("a value") = "another value"

вот простой пример пользовательского класса со свойством по умолчанию:

Public Class Foo

    Default Public Property Test(index As Integer) As String
        Get
            Return Me.items(index)
        End Get
        Set(value As String)
            Me.items(index) = value
        End Set
    End Property

    Private ReadOnly items As String() = New String(2) {"a", "b", "c"}

End Class

Dim f As New Foo()
Dim a As String = f(0)

f(0) = "A"

в приведенном выше примере можно использовать свойство по умолчанию класса string для получения символа в указанной позиции.

f(0) = "abc"
Dim c As Char = f(0)(1) '<- "b" | f.Test(0).Chars(1)