c#混淆了什么类型的数组和用法

时间:2014-10-25 09:46:40

标签: c# arrays multidimensional-array foreach

我是c#的新手,我正在尝试构建一个项目数组。我已经看过2d数组和锯齿状数组,只是无法弄清楚我应该使用的是什么,并且无法让它工作。它并不是构建数组,而是循环遍历它以询问数组元素。我在一个现有的图书馆工作,这是所有变量的来源,大多数其他支持的代码我都遗漏了,因为它不相关。一旦找到实例,我就会尝试将字段从0更新为1.非常感谢您提前提供任何帮助。

//Declare array
private double[,] myOpenTrades;

private void mymethod  (double score, double RSIComboScore, int type, int line)
{

myOpenTrades[line,0] = type;
myOpenTrades[line,1] = CurrentBar;
myOpenTrades[line,2] = Close[0];
myOpenTrades[line,3] = rewardClose;
myOpenTrades[line,4] = riskClose;
myOpenTrades[line,5] = score;
myOpenTrades[line,6] = RSIComboScore;
myOpenTrades[line,7] = this.getSMATrend();
myOpenTrades[line,8] = Math.Round(NSRSICS(5, 15, 60, 240).Rsi200AVGPlot[0]);
myOpenTrades[line,9] = myReward;
myOpenTrades[line,10] = myRisk;
myOpenTrades[line,11] = 0;

}

protected override void OnMyChange()
        {
            foreach(double[] row in myOpenTrades)
            {
                if(Close[0] >= row[3] && row[11]==0)
                {
                    Print("WIN:"+row[10]);
                    row[11]=1;
                }
                else if(Close[0] >= row[4] && row[11]==0)
                {
                    Print("LOSE:"+row[9]);
                    row[11]=1;
                }
            }
{

1 个答案:

答案 0 :(得分:0)

我不知道为什么这会被低估,这似乎是一个新用户做出一些努力的合理问题。

要回答您的问题,数组数组不是最佳选择,因为从逻辑组织的角度来看,您没有相同项目的“网格”(即2D数组),您有多个项目作为一个记录,以及一系列记录。更不用说你似乎试图混合和匹配类型;您的数组声明为double,但第一个记录type是一个整数。

我建议使用class,如下所示:

class OpenTrades
{
    public int Type;
    public Bar CurrentBar;
    public double Score;
    // etc...
}

(假设CurrentBar的类型为Bar;您必须将Bar替换为实际的类型。)

然后你将实例化你的类的数组:

OpenTrades[] myOpenTrades = new OpenTrades[11];    // This will create an array of 11 elements, indices 0 to 10

现在,在mymethod功能中,您可以为每个成员分配值。

myOpenTrades[line].Type = type;
myOpenTrades[line].Bar = CurrentBar;
myOpenTrades[line].Score = score;
// etc ...