Мне было поручено преобразовать проект VB.NET в C #, и я застрял.Я использую класс RsiOPCAuto, но я не думаю, что мне придется вдаваться в подробности, чтобы объяснить, как он работает.Давайте продолжим с моей проблемой.
Итак, в основном, я делаю захват объекта из моего класса, используя этот код:
public partial class FrmPartialMain : Form
{
RsiOPCAuto.OPCServer oOpcServer;
public FrmPartialMain()
{
InitializeComponent();
object RsiOPCAuto;
object oOPCList;
oOpcServer = new RsiOPCAuto.OPCServer();
oOPCList = oOpcServer.GetOPCServers();
Пока все хорошо.Добавив часы, я вижу, что теперь у oOPCList есть значение {string [1..4]}.
Теперь я хочу поместить эти четыре строки в поле со списком.Я делаю это с помощью простого цикла for:
for (int i = 0; i <= oOPCList.Length; i++)
{
cboServer.Items.Add(oOPCList[i]);
}
Редактировать: поцарапать это, изменил это на гораздо более хороший цикл foreach.
Несмотря на то, что этот объект теперь работает как строковый массив, oOPCList.Length и (oOPCList [i]) получают ошибки:
.Length: Ошибка 1 «объект» не содержит определениядля 'Length' и метода расширения 'Length', принимающего первый аргумент типа 'object', не найдено (вы пропустили директиву using или ссылку на сборку?)
oOPCList [i]: Ошибка 2 Невозможно применить индексирование с [] к выражению типа 'объект'
Могу поспорить, что это самая простая вещь, но я просто не могу ее увидеть, помощь очень ценится, и если есть что-то ещевам нужно знать обязательно спросить: -)
PS.Возможно, стоит упомянуть, что я пробовал несколько разных способов преобразования объекта в строковый массив, но постоянно получаю сообщение об ошибке, сообщающее, что я не могу преобразовать system.string [*] в system.string [].
Это код VB.NET, который я конвертирую:
Friend Class frmPartialMain
Inherits System.Windows.Forms.Form
Dim oOpcServer As RsiOPCAuto.OPCServer
Private Sub frmPartialMain_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
Dim RsiOPCAuto As Object
Dim oOPCList() As Object
Dim i As Integer
oOpcServer = New RsiOPCAuto.OPCServer
oOPCList = oOpcServer.GetOPCServers
For i = LBound(oOPCList) To UBound(oOPCList)
cboServer.Items.Add(oOPCList(i))
Next i