簡體   English   中英

在C#中將Object轉換為Ushort數組

[英]Convert Object to an array of Ushort in c#

我是C#的新手,但我希望將對象轉換為無符號短褲數組。 原始數據是作為對象傳遞的WORD(數字值WORD)的數組。 我嘗試了以下操作,但始終出現錯誤。

object temp = Agent.Port("PumpPressure1_01").Value;
ushort[] PP1_01 = ((IEnumerable)temp).Cast<object>()
                                     .Select(x => x == null ? x.ToUshort())
                                     .ToArray();

運行此命令時,出現以下錯誤:

'System.Collections.Generic.IEnumerable<T>' requires '1' type arguments.

出現上述錯誤時,我使用的命名空間是:

using System.Linq;
using System.Text;   // Don't think this is required but added it in case

如果添加以下名稱空間:

using System.Collections;
using System.Collections.Generic;

我收到以下錯誤。

'System.Linq.ParalleIEnumerable.Select<TTSource,TResult>()' is not supported by the language

我敢肯定這是一個明顯的問題,但是我已經搜尋了一段時間了並且找不到解決方案。 我最好的猜測是Select函數是不正確的,因為它最初旨在將對象轉換為字符串數組。

任何幫助都會很棒。

謝謝

IEnumerable是一個通用接口,因此您必須聲明所使用的數據類型。

不過,老實說,我想檢查一下該調用

object temp = Agent.Port("PumpPressure1_01").Value;

實際上正在返回-通過在調試器中檢查它...如果它只是返回對數字類型數組的引用,則應該能夠對其進行簡單轉換。 不過,您正在執行的是嘗試將數組中的每個項目都強制轉換-我懷疑那不是您應該執行的操作-這將強制轉換數組本身。

您能給我們關於Agent對象上Port方法的任何API文檔,以便我了解它返回什么意思嗎? 您可以嘗試檢查一下,看看能給您帶來什么嗎?

為什么你鑄造IEnumerable ,然后鑄造回object ,如果你的temp變量已經是類型的object

IEnumerable<T>也是一個通用接口,必須指定確切的類型(異常也會告訴您)。 如果您有整數數組,並且要使用它們,則應為IEnumerable<int>

感謝您的所有幫助和反饋。

不幸的是,我對發布的警告似乎未引起足夠的重視。

Warning: Reference to type 'System.Func '2' claims it is defined in 'c:\Windows\Microsoft.NET\Framework64\v2.0.50727mscorlib.dll'. but it could not be found

.NET參考似乎存在一些問題。 我有另一個VM,我在下面的解決方案上進行了測試,它似乎可以正常工作。 看來我必須重新安裝軟件包才能在我要使用的VM上運行。

我正在使用的軟件包是一個自定義軟件包,該軟件包使用C#構建具有預建類的解決方案,這些預構建類看起來像即插即用模塊。 您可以將塊連接在一起,將圖線從塊的一個輸入/輸出連接到另一個。 然后,您可以在塊內構建C#代碼。 基本上是假人的C#,就像我一樣。

塊示例:

塊示例:

至於代碼,我確實必須進行如下更改,但現在可以使用了。 Agent.Port(“ PumpPressure1_01”)。Value.RawValue用於引用塊上的特定端口。

object temp = (object)Agent.Port("PumpPressure1_01").Value.RawValue;

UInt16[] PP1_01 = ((System.Collections.IEnumerable)temp).Cast<object>()
    .Select(x => Convert.ToUInt16(x))
    .ToArray();

foreach(UInt16 x in PP1_01)
{
    Agent.LogDebug("values: " + x.ToString());
}

再次感謝您的所有幫助。 現在只需要使用庫參考來解決問題。

暫無
暫無

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

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