2010-02-23 3 views
7

Gibt es eine eingebaute Möglichkeit, jedes Mitglied eines Arrays durch eine Nummer in-place zu multiplizieren?VB.NET Array Arithmetic

Beispiel:

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

Welche Version von .net Framework verwenden Sie? – Andrew

Antwort

9

können Sie die Array.ConvertAll Methode verwenden.

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

EDIT

Es gibt einen kleinen Fehler in dem Beispielcode, der für die oben korrigiert werden muss, um zu kompilieren. Entfernen Sie die explizite Größe (4) aus dem Variablentyp

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

@Steven, es gibt einen kleinen Fehler bei der Deklaration der Variablen Volt. Sie müssen die explizite Größe 4 entfernen – JaredPar

0

Ich glaube nicht, dass es ein in Art und Weise aufgebaut ist, dies zu tun, aber das Beste, was ich denken konnte, zu tun wäre, um nur Ihre eigene Methode zu erstellen . So etwas wie

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

Return voltArray() 
End Function 

dann tut nur Volt = convertMilliamps (Volt)

0

Ihre Funktion für jedes Element nicht funktioniert, weil ein Element eine Kopie des Wertes ist, nicht das tatsächliche Einzelteil aus dem Array. Das sollte funktionieren:

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 
Verwandte Themen