У меня проблемы с использованием структур и функций, которые ничего не возвращают в VB.NET.
Позвольте мне попытаться объяснить здесь с помощью этого кода:
Public Class Form1
Structure Test
Dim field1 As String
End Structure
Private Function Foo() As Test
Return Nothing
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim st As Test = Foo()
End Sub
End Class
В предыдущем коде, когда я возвращаю Nothing в результате функции Foo, я ожидал, что st равно Nothing. Но этого не происходит.
Затем я нашел в документации MSDN:
Если присвоить переменной Nothing значение по умолчанию для ее объявленного типа. Если этот тип содержит элементы-переменные, все они имеют значения по умолчанию.
Итак, я обнаружил, что когда я присваиваю структуре Nothing, все ее элементы устанавливаются в значения по умолчанию, а не сама структура.
Кроме того, я попытался сделать тип st допускающим значение NULL, объявив:
Dim st As Nullable(Of Test) = Foo()
но, тем не менее, я не могу проверить, равно ли st Ничего, используя:
If st Is Nothing Then
or
If st.Equals(Nothing) Then
Итак, вопросы:
1 - Можно ли назначить Ничего структуре, а не ее членам?
2 - Как я могу проверить, является ли возвращаемое значение структуры Ничего ?