VB.NET a-t-il un équivalent direct des paramètres de fonction C # out
, dans lesquels la variable transmise à une fonction n'a pas besoin d'être initialisée?
Réponses
Trop de publicités?Non, il n'existe pas d'équivalent de l' out
mot-clé dans VB.
Cependant, VB n'automatiquement initialiser toutes les variables locales à une méthode, de sorte que vous pouvez utiliser ByRef
sans avoir explicitement initialiser la variable première.
Exemple:
Sub Main()
Dim y As Integer
Test(y)
End Sub
Sub Test(ByRef x As Integer)
x = 42
End Sub
(Si vous examinez le code dans le cadre (par exemple Double.TryParse), vous pouvez voir l' <OutAttribute>
ajouté aux paramètres, mais cela ne fait qu'une différence lorsque l'appel est en ordre pour COM interop ou appel de plate-forme.)
Non, il n'y a pas d'équivalent construction qui permet à un non-initialisé la variable à être passés à une méthode sans un avertissement, mais, comme mentionné dans ma question et de répondre à la spécification d'un <Out()>
d'attribut sur un ByRef
paramètre de définition, bien que VB l'ignore, est traitée par le C# comme un out
paramètre.
Donc, je voudrais pré-initialiser les variables de référence pour Nothing
et spécifier <Out()> ByRef
pour signifier l'intention (qui fonctionne si C# utilisateurs d'accéder à vos méthodes).
Version C #
void TestFunc(int x, ref int y, out int z) {
x++;
y++;
z = 5;
}
Version vb.net
Sub TestFunc(ByVal x As Integer, ByRef y As Integer, ByRef z As Integer)
x += 1
y += 1
z = 5
End Sub
Mettre à jour
Comme indiqué dans le commentaire, n'oubliez pas d'initialiser votre paramètre qui sera utilisé dans la fente de sortie