VB.NET les Structures et Rien - problèmes

Je vais avoir quelques maux de tête à l'aide de Structures et de fonctions qui ne retournent Rien dans VB.NET.

Laissez-moi vous expliquer ici avec ce 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

Dans le code précédent, quand je retourne à Rien comme résultat de la fonction Foo je m'attends que st est Rien. Mais ce n'est pas ce qui se passe.

Ensuite, j'ai trouvé dans la documentation MSDN:

Attribution de Rien à une variable définit la valeur par défaut pour son type déclaré. Si ce type contient des variables membres, ils sont tous définis à leurs valeurs par défaut.

Donc j'ai découvert que lorsque je attribuer Rien à une structure, tous ses membres sont fixés à leurs valeurs par défaut, au lieu de la structure elle-même.

Aussi, j'ai essayé de faire st un type Nullable en déclarant:

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

mais, là encore, je ne peux pas vérifier si st n'en est Rien, en utilisant:

    If st Is Nothing Then  

ou

    If st.Equals(Nothing) Then

Donc, des questions:
1 - Est-il possible d'attribuer Rien à la structure et non à ses membres?
2 - Comment puis-je vérifier si un retour struct valeur est Rien?

OriginalL'auteur RHaguiuda | 2010-07-02