2010-02-23 12 views
7

Czy istnieje wbudowany sposób na pomnożenie każdego elementu tablicy przez pewną liczbę w miejscu?Arytmetyczna tablica VB.NET

Przykład:

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

jakiej wersji platformy .net używasz? – Andrew

Odpowiedz

9

Można użyć metody Array.ConvertAll.

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

EDIT

Jest mały błąd w przykładowy kod, który należy skorygować o powyższym skompilować. Wyjąć wyraźny rozmiar (4) z typem zmiennej

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

@Steven, występuje niewielki błąd w sposobie deklarowania zmiennych woltów. Musisz usunąć wyraźny rozmiar 4 – JaredPar

0

Nie sądzę, jest zbudowany w sposób to zrobić, ale najlepsze, co mogłem myśleć zrobić byłoby po prostu stworzyć własną metodę . Coś jak

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

Return voltArray() 
End Function 

potem po prostu zrobić volt = convertMilliamps (woltach)

0

Twoja funkcja nie działa dla każdej pozycji, ponieważ pozycja jest kopią wartości, a nie rzeczywista pozycja z tablicy. Powinno to zadziałać:

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