c# - 索引异常未知
问题描述
我在Visual Studio的第一个打印语句中将下面的代码标记为“索引超出范围异常”,但问题是当我将鼠标悬停在这些值上时,它们都是我所期望的(即c = 1),而自动窗口显示:CurrentBar = 907
、LSwDMIbar = 905
、c = 1
。Locals 窗口中有一条异常行,但是当我展开它时,它并没有给我任何线索,或者我过去遇到过这个问题,并且在使用 VS 进行调试时,我可以看到负值,但我不能现在看什么。
我追踪它以块FlatDMI[a]
打印if (PrintDmiSwing && c > 0)
,但我不明白为什么。
我在哪里可以找到错误?
谢谢
private int c;
...
if (!FlatInd && Math.Abs(DMI1[1] - DMI1[2]) < 0.0001)
{
var newFlat = DMI1[1];
FlatDMI.Add(newFlat);
FlatInd = true;
if (!FlatIndBar)
{
flatDMIbar = CurrentBar - 2;
FlatIndBar = true;
}
if (PrintFlat && a > 0)
Print("Flat DMI | " + Time[0] + " | Current Bar = " + CurrentBar
+ string.Format("\r\nFlatDMI[0] = {0 :F4} | FlatDMI[1] = {1:F4}",
FlatDMI[a], FlatDMI[a-1]) + " | flatDMIbar = " + flatDMIbar + " | a
= " + a + "\r\n-");
a++;
}
else
{
FlatInd = false;
FlatIndBar = false;
}
if (!LSwDMIbool && DMI1[1] - DMI1[2] > 0.001 && DMI1[3] - DMI1[2] >
0.001)
{
lSwDMI = DMI1[2];
LSwDMI.Add(lSwDMI);
LSwDMIbar = CurrentBar - 2;
var lSwDMIprice = Lows[2].GetValueAt(LSwDMIbar);
LSwDMIprice.Add(lSwDMIprice);
LSwDMIbool = true;
if (PrintDmiSwing && c > 0)
{
Print("DMI Swing Low | " + Time[0] + " | Current Bar = " + CurrentBar
+ string.Format("\r\nLSwDMI[0] = {0:F4} | LSwDMI[1] = {1:F4}",
LSwDMI[c], LSwDMI[c - 1]) + " | FlatDMI[a] = " + FlatDMI[a] + "
| LSwDMIbar = " + LSwDMIbar + " | LSwDMIprice[0] = " +
LSwDMIprice[c] + " | LSwDMIprice[1] = " + LSwDMIprice[c - 1] + " | c =
" + c + "\r\n-");
foreach (double lSwDM in LSwDMI)
Print(string.Format("LSwDMI = {0:F4}", lSwDM));
}
c++;
}
解决方案
推荐阅读
- javascript - 如何在firebase实时数据库中每5秒更新一次位置(js代码)
- java - 如何修复 Android 中的跨应用脚本漏洞
- asp.net-core-signalr - 将自托管 SignalR 服务器添加到 .Net Core Worker 服务
- batch-file - 如何使用批处理文件检查程序的版本?
- javascript - 安全地存储 Web 推送通知的订阅 JS/Node.js
- javascript - 如何从图像的顶部和底部剪切一个矩形?
- json - 无法使用 JSONSerialization 打印特定的嵌套 json 数据
- android - Android - ToyVPN 是否有可能“伪造”VPN 连接?
- sql - PostgreSQL:将一整列设置为空值和数据库大小增加。为什么?
- android - 喷气背包组成。日期时间选择器