2009-06-22 5 views
2

Что такое синтаксис VB.NET для объявления размера массива объектов во время выполнения?Синтаксис VB.NET для массивов объектов

Чтобы получить представление о том, что я имею в виду, вот код до сих пор:

Private PipeServerThread As Thread() 

Public Sub StartPipeServer(NumberOfThreads As Integer) 
    ' ??? equivalent of C# 
    ' ??? PipeServerThread = new Thread[numberOfThreads]; 
    ' ??? goes here 
    For i = 0 To NumberOfThreads - 1 
     PipeServerThread(i) = New Thread(New ThreadStart(AddressOf ListeningThread)) 
     PipeServerThread(i).Start() 
    Next i 
End Sub 

Я попробовал несколько вещей, но только в конечном итоге приравнивая его с синтаксисом создания объекта.

ответ

4
PipeServerThread = New Thread(numberOfThreads - 1) { } 

В качестве альтернативы:

ReDim PipeServerThread(numberOfThreads - 1) 

Следует помнить, что значение внутри скобок находится верхняя граница массива в VB.NET (в отличие от C#, где это длина массива).

+0

Большое спасибо за то, что мне нужно. – 2009-06-22 12:13:57

+0

«Верхняя граница» массива - правильный термин для того, что вы указываете между скобками, но да, это правильно. Однако это немного раздражает, что VB.NET и C# отличаются в этом отношении. (Путь C# выглядит намного логичнее). – Noldorin

2

Это должно быть то, что вы хотите:

ReDim PipeServerThread(numberOfThreads - 1) 

Вы не можете использовать New ключевое слово, так как компилятор VB.NET интерпретирует это как попытку создать новый экземпляр типа Thread.

+0

Да, мой VB.NET немного ржавый, похоже. Обновлен ответ. – Noldorin

+0

Удалил мой предыдущий комментарий, поскольку он не имеет смысла с редактированием :) – 2009-06-22 12:16:38

+0

@Noldorin: это не эквивалентно упомянутому заявлению C#. См. Мой ответ. –

Смежные вопросы