簡體   English   中英

C# <dynamic> 轉換或轉換

[英]c# <dynamic> casting or conversion

我正在使用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()轉換
  • 使用CopyTo將整個列表的內容復制到<double>列表。

我在這里有點茫然。

1)您可以遍歷數組

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

2)或

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

如果您已經有一個double數組,則上述解決方案有效。 對於您的情況,如果您確定data [0]是double數組,則可以使用as運算符

double[] temp = data[0] as double[];
Console.WriteLine(string.Join(",", temp));

在調用方法之前,您的List<object> data不能為空。 如果您執行Console.WriteLine(data.Last()); 肯定會得到結果,而不是Console.WriteLine(data[0])

因此,列表中的第一項為double數組。 如果要查看從該數組中打印出來的值,可以手動遍歷它們,或者如果對象是數組,則可以使用以下代碼打印出數組項目,否則只需打印項目值即可。

        if (data[0].GetType().IsArray)
        {
            Console.WriteLine(string.Join(",", ((Array)data[0]).Cast<object>()));
        }
        else
        {
            Console.WriteLine(data[0]);
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM