c# - 无法将对象类型 'System.String[*]' 转换为类型 'System.String[]'

标签 c# .net visual-studio-2010 casting opc

大家好,我遇到了 C# .NET 中的代码问题,我正在使用 DLL 连接到 OPC 服务器,该 DLL 在 VB.NET 项目中使用并且完全没有问题。

我试图在 ListBox 中显示可用服务器的列表,VB.NET(和工作)中使用的代码是这个:

Dim AllOPCServers As Object
AllOPCServers = AnOPCServer.GetOPCServers

' Load the list returned into the List box for user selection
Dim i As Short
For i = LBound(AllOPCServers) To UBound(AllOPCServers)
    AvailableOPCServerList.Items.Add(AllOPCServers(i))
Next i

我写这个是为了在 C# 应用程序中使用

try
{
    var _listOPCServer = _OPCServer.GetOPCServers();
    foreach(var i in _listOPCServer)
    {
        string serverName = (string)i;
        listServers.Items.Add(serverName);
    }             
}
catch (Exception exc)
{
    lstMsg.Items.Add(DateTime.Now + " Error al Obtener Lista de OPC's: " + exc.Message);
}

在本地选项卡上的 Debug模式下显示:

_listOPC服务器 | {字符串[1..2]} |动态{字符串[]} |

[1]        |  "Server01"    | string  
[2]        |  "Server02"    | string

更新:

我在“foreach(var i in _listOPCServer)”行中收到错误

无法将对象类型“System.String[*]”转换为类型“System.String[]”

这才是真正的错误。

我确定我做错了什么,有人可以帮助我吗?

最佳答案

好的,我找到了解决这个问题的方法,它只是您建议的一个模型

 Array _listOPCServer = (Array)(object)_OPCServer.GetOPCServers();               

            foreach(object i in _listOPCServer)
            {
                string serverName = (string)i;
                listServers.Items.Add(serverName);
            }             

我只在声明中添加了 (object) 并且工作正常,现在我可以按照我想要的方式显示服务器列表

或者也这样做

Array _listOPCServer = (Array)(object)_OPCServer.GetOPCServers();               

            foreach(object i in _listOPCServer)
            {
                listServers.Items.Add(i);
            }

再次感谢您的帮助和时间!

关于c# - 无法将对象类型 'System.String[*]' 转换为类型 'System.String[]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12416338/

相关文章:

.net - 最佳实践 : . NET : How to return PK against an oracle database?

c# - checkin : Operation not performed Could not find file *. csproj.vspscc

c# - 如何在 Xunit 中创建基测试类来测试接口(interface)实现?

c# - 执行 Oracle 过程

c# - 为什么我不能将一个游戏对象分配给另一个游戏对象的公共(public)变量

c++ - Visual Studio 中以字母 'x' 或 'xx' 开头的头文件是什么?

.net - 安装程序需要框架 4.0 - 但它已经安装

c# - 将 DataTable 批量复制到 MySQL(类似于 System.Data.SqlClient.SqlBulkCopy)

c# - 为什么 EnumDropDownListFor 在 url 参数与模型中的字段相同时绑定(bind)不正确

c# - 如何使面板控件显示在所有其他控件下方?