如何在if语句中测试多个变量?

时间:2019-10-23 13:14:46

标签: c# if-statement variables

我正在尝试在if语句中测试多个变量。

double firstPlot = RMMA(MultiMA1types.VWMA, 2, 160, 10, 2, 128, 0.75, 0.5).Values[15][0];
double secondPlot = RMMA(MultiMA1types.VWMA, 2, 160, 10, 2, 128, 0.75, 0.5).Values[14][0];

实际上,它们将是多个变量: thirdPlot thirdPlot …

if(firstPlot < highPrice && firstPlot > lowPrice)

是否可以在if语句内一次测试每个变量,而不必重复if语句与变量数相同的次数?就像创建一个将收集所有Plot并同时在if语句中同时进行全部测试的变量一样?

谢谢

2 个答案:

答案 0 :(得分:1)

看起来Values是一个锯齿状的数组,您要从中提取每个基础数组的第一个元素,因此应能执行以下操作:

using System.Collections.Generic;
using System.Linq;
...
double[][] plots = RMMA(MultiMA1types.VWMA, 2, 160, 10, 2, 128, 0.75, 0.5).Values;

IEnumerable<double> firstValues = plots.Select(a => a[0]);

bool allValuesInRange = firstValues.All(v => v < highPrice && v > lowPrice);

评论后编辑:

NinjaTrader.NinjaScript.Series<double>[] series = 
    RMMA(MultiMA1types.VWMA, 2, 160, 10, 2, 128, 0.75, 0.5).Values;

IEnumerable<double> firstValues = series.Select(s => s[0]);

foreach (double firstValue in firstValues)
{
    Console.WriteLine(firstValue);
}

答案 1 :(得分:0)

您是否可以遍历数组?例如,如下所示:

    private bool CheckValues(/*params here*/)
    {
        var RMMAVals = RMMA(MultiMA1types.VWMA, 2, 160, 10, 2, 128, 0.75, 0.5);
        for (int k = 0;  k<RMMAVals.Length; k++)
        {
            if (RMMAVals[k][0] >= highPrice || RMMAVals[k][0] <= lowPrice)
                return false;
        }
        return true;
    }