Est-il VB.NET l'équivalent de C# en dehors des paramètres?
N'VB.NET avoir un équivalent direct de C# out
les paramètres de la fonction, où la variable passée dans une fonction n'a pas besoin d'être initialisé?
Vous devez vous connecter pour publier un commentaire.
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:
(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.)<OutAttribute>
, heureusement, je suis à la migration d'un classique ASP app VB.NET il n'est pas COM interop ou appel de plate-forme. J'ai des centaines d'avertissements du compilateur de traiter avec.Object
, de sorte qu'il ne peut pas être utilisé pour unByRef x As Integer
paramètre).ByRef
paramètres. (Cela n'arrive pas avec le type de valeur des paramètres.)Nothing
à se débarrasser de l'avertissement eventhough il ne change pas le résultat.Nothing
à eux jusqu'à présent. C'est juste de temps que je vais avoir à faire des centaines de fois dans un vaste héritage de site web. Merci pour enquêter.<Out()>
attribut est l'équivalent de la version C#, comme ma réponse précise.Out
attribut est pas équivalent à C#out
mot-clé.out
paramètre et un VB.NET<Out()> ByRef
paramètre.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 mon la question et la réponse la spécification d'un
<Out()>
l'attribut sur unByRef
la définition de paramètres, bien que VB ignore, est traités par C# comme unout
paramètre.Oui, je 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).Si vous sentez que vous savez quand vous avez l'intention d'accéder à la valeur par défaut
Nothing
dans le cas contraire non affecté de référence des variables, vous pouvez définir le message d'Avertissement "configuration" "Utilisation de la variable avant l'affectation" à "None" au niveau du Projet (Project Properties > Compiler, et vous voudrez probablement de définir la Configuration à "Toutes les Configurations" avant de modifier ce paramètre), ou, dans VS2015 (VB.NET 14), vous pouvez utiliser#Disable Warning BC42030
.Version C#
Vb.net version
Trouvé la réponse ici
Mise à jour
Comme indiqué dans le commentaire n'oubliez pas de initialze votre paramètre qui sera utilisé dans la fente
J'ai eu le problème en VB.NET que j'ai appelé une fonction "par ref", qui est passé d'un tableau arrière.
Même si le compilateur signalé comme un avertissement, il était beau. La solution est super simple et sans doute bien pratique.
J'ai changé
à
Il aide aussi en cas de codage si les noms de variable sont descriptifs...
Vous pouvez utiliser le passage par la méthode de référence dans VB.NET.
Vous avez besoin le paramètre de Sortie mécanisme en C#, car elle ne permet pas d'utiliser n'importe quelle variable sans l'initialiser.
VB.NET n'a pas besoin d'un mot-clé qu'il fait automatiquement par lui-même.
Suffit d'utiliser ByRef.
VB est l'attribut qui doit être le même que le C#, mais aujourd'hui, vous obtenez toujours un avertissement, même si vous l'utilisez. Il y a des détails à propos de la fixation dans vblang zone de github. https://github.com/dotnet/vblang/issues/67.
Utilisation de mots clés ByRef avant de variable.
ByRef
est équivalent àref
paramètres en C#, qui doivent être initialisées avant d'être passer dans une fonction.