0

我在程序中调用了一个类来进行一些计算。现在有必要多次调用这个类,因为我需要对所有数据库表行成员进行此计算。我有For... Next,但它不能正常工作,每次它只返回最后一次调用计算量到数据库时,代码的一部分是这样的:

For j As Integer = 0 To symbols.Rows.Count - 1
    Dim spread As Double
    Dim digits As Integer = symbols.Rows(j)("Digits")
    Dim symbolgroupconditionrow = symbolsgroupcondition.Select("ID = '" & symbols.Rows(j)("SymbolGroupID") & "'")
    Select Case digits
        Case 0
            spread = ((symbols.Rows(j)("Spread") + symbolgroupconditionrow(0)("SpreadTopup")) * 1)
        Case 1
            spread = ((symbols.Rows(j)("Spread") + symbolgroupconditionrow(0)("SpreadTopup")) * 0.1)
        Case 2
            spread = ((symbols.Rows(j)("Spread") + symbolgroupconditionrow(0)("SpreadTopup")) * 0.01)
        Case 3
            spread = ((symbols.Rows(j)("Spread") + symbolgroupconditionrow(0)("SpreadTopup")) * 0.001)
        Case 4
            spread = ((symbols.Rows(j)("Spread") + symbolgroupconditionrow(0)("SpreadTopup")) * 0.0001)
        Case 5
            spread = ((symbols.Rows(j)("Spread") + symbolgroupconditionrow(0)("SpreadTopup")) * 0.00001)
    End Select
    Dim qclient As New Quotereader
    qclient.GetWord("iqlink", symbols.Rows(j)("Symbol"), "last", spread)
Next j

该对象Quotereader位于我之前导入的类文件中,现在我的问题是有没有办法以多个名称“暗淡新”一个对象,例如:

Dim qclient(10) As New Quotereader
For I = 0 to 9
    qclient(I).GetWord("iqlink", symbols.Rows(j)("Symbol"), "last", spread)
Next I

或任何其他方式?

4

2 回答 2

1

我想如果我正确理解了这个问题,你如何将 10 个新对象初始化到该数组中?如果是这种情况,您可以使用 linq。

Dim qclient = Enumerable.Range(0,10).ToList().Select(fuhction(i) New QuoteReader()).ToArray()

它的作用是创建一个从 0 到 10 的 11 个整数的列表,为列表中的每个数字创建一个 QuoteReader 实例,然后返回一个 QuoteReaders 数组。我不确定这是否是您所追求的,但我希望它有所帮助。

于 2013-09-11T23:23:15.993 回答
1

我已将代码更改如下,一切正常。

        Dim   j As Integer = 0 

            Dim qclient = Enumerable.Range(0, 9).Select((Function(i) New Quotereader))
            For Each cl As Quotereader In qclient
                Dim spread As Double



                Dim digits As Integer = symbols.Rows(j)("Digits")


                Dim symbolgroupconditionrow = symbolsgroupcondition.Select("ID = '" & symbols.Rows(j)("SymbolGroupID") & "'")


                Select Case digits
                    Case 0


                        spread = ((symbols.Rows(j)("Spread") + symbolgroupconditionrow(0)("SpreadTopup")) * 1)

                    Case 1

                        spread = ((symbols.Rows(j)("Spread") + symbolgroupconditionrow(0)("SpreadTopup")) * 0.1)
                    Case 2


                        spread = ((symbols.Rows(j)("Spread") + symbolgroupconditionrow(0)("SpreadTopup")) * 0.01)


                    Case 3
                        spread = ((symbols.Rows(j)("Spread") + symbolgroupconditionrow(0)("SpreadTopup")) * 0.001)

                    Case 4
                        spread = ((symbols.Rows(j)("Spread") + symbolgroupconditionrow(0)("SpreadTopup")) * 0.0001)

                    Case 5
                        spread = ((symbols.Rows(j)("Spread") + symbolgroupconditionrow(0)("SpreadTopup")) * 0.00001)

                End Select






                cl.GetWord("iqlink", symbols.Rows(j)("Symbol") + ".FXCM", "last", spread)
                j = j + 1
            Next

感谢 jcwrequests 的善意建议。

于 2013-09-12T00:05:56.243 回答