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)