VB.NET Structs und Nichts - Probleme

Ich habe einige Kopfschmerzen mit Strukturen und Funktionen, die Nichts zurückgeben in VB.NET.

Lassen Sie mich versuchen zu erklären, hier mit diesem code:

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

In den vorherigen code, wenn ich Nichts zurück als Ergebnis der Foo-Funktion, die ich erwarten würde, dass st ist Nichts. Aber das ist nicht das, was passiert.

Dann fand ich in der MSDN-Dokumentation:

Nichts zuweisen, um eine variable, wird der Standardwert für seine deklarierte Typ. Wenn dieser Typ enthält variable Mitglieder, Sie sind alle auf Ihre Standardwerte festgelegt.

Also ich habe festgestellt, dass wenn ich diesen Nichts auf eine Struktur, die alle seine Mitglieder werden auf Ihre Standardwerte festgelegt, statt der struct selbst.

Außerdem habe ich versucht, st eine Nullable-Typ, indem Sie erklärt:

    Dim st As Nullable(Of Test) = Foo()  

aber noch kann ich nicht überprüfen, ob st ist Nichts mit:

    If st Is Nothing Then  

oder

    If st.Equals(Nothing) Then

So, Fragen:
1 - Ist es möglich, zuweisen Nichts, um die Struktur und nicht auf seine Mitglieder?
2 - Wie kann ich prüfen, ob ein return struct Wert ist Nichts?

InformationsquelleAutor RHaguiuda | 2010-07-02

Schreibe einen Kommentar