0

我正在使用 NI ADC 做一些工作。我目前正在读取来自 AO 和 AI 的电压,List<dynamic>并且我在使用 console.writeLine 时遇到了一些问题。

我使用动态类型是因为程序需要在运行时而不是编译时决定数据应该存储在什么位置。

因此,因此,每当我想打印列表的内容时,它都不知道我在问什么,所以它返回正在存储的类型,而不是选定的元素数据。

public void createTask(DataGrid grid, List<Object> data, float sampleRate, int sampleAmount, ComboBox channel, float minRange, float maxRange)
        {
            using (Task myTask = new Task())
            {
                myTask.AIChannels.CreateVoltageChannel(channel.Text, "",
                    (AITerminalConfiguration)(-1), minRange, maxRange, AIVoltageUnits.Volts); // create the task to measure volts

                myTask.Timing.ConfigureSampleClock("", sampleRate, SampleClockActiveEdge.Rising, // create the timing
                    SampleQuantityMode.ContinuousSamples, sampleAmount);

                AnalogMultiChannelReader reader = new AnalogMultiChannelReader(myTask.Stream);

                myTask.Control(TaskAction.Verify);

                data.Add(reader.ReadSingleSample());

                Console.WriteLine(data[0]);
            }
        }

依次打印出来System.Double[]。我将如何打印出元素实际存储的内容而不是其类型?我尝试了很多不同的方法来尝试获得我所追求的东西,但我在 C# 语法(我使用 C++)上苦苦挣扎——只使用了三周。

我试过了;

  • 铸件
  • ToString() 转换
  • <double>使用 CopyTo将整个列表的内容复制到列表中。

我在这里有点茫然。

4

3 回答 3

1

因此,列表中的第一项是双精度数组。如果要查看打印出的该数组中的值,可以手动遍历它们,或者如果对象是数组,则可以使用以下代码打印出数组项,否则只打印项值。

        if (data[0].GetType().IsArray)
        {
            Console.WriteLine(string.Join(",", ((Array)data[0]).Cast<object>()));
        }
        else
        {
            Console.WriteLine(data[0]);
        }
于 2014-06-26T14:33:02.330 回答
1

1)您可以遍历数组

 double[] data = new double[] { 1, 2, 3 };
 foreach (var item in data)
       Console.WriteLine(item.ToString());

2)或

 Console.WriteLine(string.Join(",", data)); 

如果您已经有一个双精度数组,则上述解决方案有效。在您的情况下,如果您确定 data[0] 是一个双精度数组,您可以使用 as 运算符

double[] temp = data[0] as double[];
Console.WriteLine(string.Join(",", temp));
于 2014-06-26T13:41:42.947 回答
1

在调用您的方法之前,您List<object> data的值不能为空。如果你这样做,你肯定会得到Console.WriteLine(data.Last());结果Console.WriteLine(data[0])

于 2014-06-26T13:42:41.347 回答