2010-02-23 4 views
7

Existe-t-il un moyen intégré de multiplier chaque membre d'un tableau par un certain nombre sur place?VB.NET Array Arithmetic

Exemple:

Dim volts() as Double = {1.243, 0.534, 5.343, 2.223, 4.334} 
Dim millivolts (4) as Double = volts.MultiplyEachBy(1000) 'something like this 
+0

Quelle version du framework .net utilisez-vous? – Andrew

Répondre

9

Vous pouvez utiliser la méthode Array.ConvertAll.

Array.ConvertAll(volts, Function(x) x * 1000) 

EDIT

Il y a une petite erreur dans l'exemple de code qui doit être corrigée pour le plus récent pour compiler. Retirez la taille explicite (4) du type de variable

Dim volts() As Double = {1.243, 0.534, 5.343, 2.223, 4.334} 
+0

@Steven, il y a une légère erreur dans la façon dont vous déclarez la variable volts. Vous devez supprimer la taille explicite 4 – JaredPar

0

Je ne pense pas qu'il y ait un construit de manière à ce faire, mais la meilleure chose que je pouvais penser à faire serait de créer simplement votre propre méthode . Quelque chose comme

Public Function convertMilliamps(ByVal voltArray() As Double) 
    For Each item AS Double In voltArray 
     item = item * 1000 
    Next 

Return voltArray() 
End Function 

alors il suffit de faire volts = convertMilliamps (volts)

0

Votre fonction ne fonctionne pas pour chaque élément parce qu'un élément est une copie de la valeur, et non l'élément réel du tableau. Cela devrait fonctionner:

Public Function MultiplyArrayByScalar(ByRef arry As Double(), ByVal scaler As Double) As Double() 

    Dim newArry As Double() 
    Dim size As Integer = arry.GetLength(0) 
    ReDim newArry(size - 1) 
    Dim i As Integer 
    For i = 0 To size - 1 
     newArry(i) = arry(i) * scaler 
    Next 

    Return newArry 
End Function