4 votes

Initialisation d'un tableau C# en VB.NET

En C#, je peux déclarer une variable de tableau de cette manière

object[] Parameters;

et l'initialiser de cette manière :

Parameters = new object[20];

En Visual Basic, déclarer et initialiser un tableau est facile :

Dim Parameters(19) As Object
Dim Parameters As Object(19)    ' Syntaxe alternative

Comment pourrais-je initialiser une variable de tableau déjà déclarée en VB.NET?

Parameters = New Object(19) ne fonctionne pas.


Par exemple, comment pourrais-je traduire le code suivant en VB.NET?

Dim value As Integer = 20;
Dim Parameters As Object();
If (value > 10) Then
    Parameters = New Object(19) {}
End If

7voto

Heinzi Points 66519

Essentiellement le même code Visual Basic que les autres, mais j'en profiterais pour ajouter un peu de style :

Dim value = 20 ' Inférence de type, comme "var" en C#
Dim parameters() As Object ' Pourrait également être "parameters As Object()"
If value > 10 Then
    parameters = New Object(19) {} ' C'est vrai, Visual Basic utilise l'indice maximum
End If ' au lieu du nombre d'éléments.

Les variables locales (parameters) devraient commencer par une lettre minuscule. C'est une convention établie et cela aide à obtenir une coloration syntaxique correcte dans Stack Overflow (cela s'applique également au code C# d'origine).

Alors, pourquoi les accolades {} sont-elles requises en Visual Basic ? En Visual Basic, à la fois les appels de méthodes et l'accès aux tableaux utilisent des parenthèses (...). Ainsi, New X(4) pourrait signifier :

  • Créer un nouvel objet de type X et passer 4 au constructeur,
  • Créer un tableau de 5 éléments de X.

Pour distinguer les deux cas, vous utilisez la syntaxe de l'initialisateur de tableau dans le deuxième cas. Généralement, les accolades contiennent des valeurs réelles :

myArray = New Integer() {1, 2, 3}

6voto

CommonSense Points 341
Dim valeur As Integer = 20
Dim Paramètres() as object
If valeur > 10 then
  Paramètres = new Object(valeur - 1){}
end if

4voto

Darin Dimitrov Points 528142

Si vous êtes paresseux comme moi, vous pourriez utiliser un convertisseur en ligne qui donne:

Dim value As Integer = 20
Dim Parameters As Object()
If value > 10 Then
    Parameters = New [Object](19) {}
End If

Et si vous n'êtes pas comme moi et que vous voulez apprendre VB.NET, rendez-vous à la documentation de la syntaxe VB.NET et commencez à lire.

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