c#混淆了什么类型的数组和用法
本文关键字:数组 用法 类型 什么 | 更新日期: 2023-09-27 18:27:44
我是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;
}
}
{
我不知道为什么会被否决,这似乎是一个付出了一些努力的新用户提出的合理问题。
为了回答您的问题,阵列阵列不是最佳选择,因为从逻辑组织的角度来看,您没有相同项目的"网格"(即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 ...