Solved

Function

Posted on 2011-09-24
2
241 Views
Last Modified: 2012-06-27
Public Class SigmaValues      

       Public sigmaAway1 As Double
        Public sigmaAway2 As Double
        Public sigmaAway3 As Double
        Public sigmaAway4 As Double
        Public sigmaAway5 As Double
        Public sigmaAway6 As Double
        Public sigmaAway7 As Double
        Public sigmaAway8 As Double

End class

Public Function GetSigmaSum(sigmaList as arraylist, sigmaID as integer) as double

Dim sigmaSum as double



return sigmaSum

End Function

Hi Experts,

Please look at the above snippet. I would like to pass an array of sigmavalues to a function and it pass back the sum of all values in a single sigma group. How can I do this. Useage would be.

GetSigmaSum(sigmalist, 2)

This would pass back the sum of all sigmaAway2 values.

0
Comment
Question by:DColin
2 Comments
 
LVL 83

Accepted Solution

by:
CodeCruiser earned 250 total points
ID: 36593854
Is the number of sigmaaway variables in class limited? Or is it extendable? How about using an array within the class as well? Then you can try something like below

Public Function GetSigma(sigmaList as arraylist, sigmaID as integer) as double
Dim Sum as Double
For Each sl in SigmaList
   Sum += sl.Values(sigmaID - 1) 'Values is the array in the class
Next
Return Sum
End Function

If not using array then something like below

Public Function GetSigma(sigmaList as arraylist, sigmaID as integer) as double
Dim Sum as Double
For Each sl in SigmaList
 If sigmaID = 1 Then  
    Sum += sl.SigmaAway1
 ElseIf SigmaID = 2 then
    Sum += sl.SigmaAway2
 ...
 End If
Next
Return Sum
End Function
0
 
LVL 85

Assisted Solution

by:Mike Tomlinson
Mike Tomlinson earned 250 total points
ID: 36594496
You can do this via Reflection or the legacy CallByName()  function.

Here's a quick example without any error checking:
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim al As New ArrayList

        Dim sv As New SigmaValues
        sv.sigmaAway2 = 1
        al.Add(sv)

        sv = New SigmaValues
        sv.sigmaAway2 = 1
        al.Add(sv)

        sv = New SigmaValues
        sv.sigmaAway2 = 1
        al.Add(sv)

        Dim sum As Double = GetSigmaSum(al, 2)
        MessageBox.Show(sum)
    End Sub

    Public Function GetSigmaSum(ByVal sigmaList As ArrayList, ByVal sigmaID As Integer) As Double
        Dim sigmaSum As Double
        For Each sl As SigmaValues In sigmaList
            sigmaSum = sigmaSum + CallByName(sl, "sigmaAway" & sigmaID, CallType.Get)
        Next
        Return sigmaSum
    End Function

End Class

Public Class SigmaValues
    Public sigmaAway1 As Double
    Public sigmaAway2 As Double
    Public sigmaAway3 As Double
    Public sigmaAway4 As Double
    Public sigmaAway5 As Double
    Public sigmaAway6 As Double
    Public sigmaAway7 As Double
    Public sigmaAway8 As Double
End Class

Open in new window

0

Featured Post

Live: Real-Time Solutions, Start Here

Receive instant 1:1 support from technology experts, using our real-time conversation and whiteboard interface. Your first 5 minutes are always free.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
More on Time zones in vb 2010 12 38
vb.net 2 43
Get Client IP on RDS - VB.NET 15 44
Obtain cell value using column ID in DataGrid using VB.NET 2 17
Article by: Kraeven
Introduction Remote Share is a simple remote sharing tool, enabling you to see, add and remove remote or local shares. The application is written in VB.NET targeting the .NET framework 2.0. The source code and the compiled programs have been in…
Microsoft Reports are based on a report definition, which is an XML file that describes data and layout for the report, with a different extension. You can create a client-side report definition language (*.rdlc) file with Visual Studio, and build g…
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

786 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question