大家好,我遇到了 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/