109 votes

Existe-t-il un équivalent VB.NET des paramètres C # out?

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?

111voto

Guffa Points 308133

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.)

36voto

Mark Hurd Points 4746

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).

11voto

Dvd Prd Points 2039

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
 

Trouvé la réponse ici

Mettre à jour

Comme indiqué dans le commentaire, n'oubliez pas d'initialiser votre paramètre qui sera utilisé dans la fente de sortie

1voto

Josh Points 1

Vous pouvez utiliser la méthode pass par référence dans VB.net.

Vous avez besoin du mécanisme de paramètre Out en C # car il ne vous permet d'utiliser aucune variable sans l'initialiser.

VB.net n'a pas besoin de mot-clé spécial car il le fait automatiquement.

Il suffit d'utiliser ByRef.

-4voto

deostroll Points 3586

Utilisez le mot clé ByRef avant variable.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X