2014-11-12 4 views
2

Вот кусок кода VB.Net:Преобразование VB.Net массива в C#

Dim left As Object = NewLateBinding.LateGet(NewLateBinding.LateGet(sender, Nothing, "PressedLink", New Object(0 - 1) {}, Nothing, Nothing, Nothing), Nothing, "ItemName", New Object(0 - 1) {}, Nothing, Nothing, Nothing) 

Мой вопрос с:

New Object(0 - 1) 

Онлайн конвертер преобразованного его на следующий код C# :

New Object[0 - 1] 

Я сделал некоторые исследования в коде массива VB.Net и выглядеть (0 - 1) просто говорю, какие номера запуски индекса и заканчивается. Однако, в C# компилятор видит это как негативный 1. У меня есть ощущение, что в C# это должно быть:

New Object[2] 

Я просто хотел, чтобы увидеть, если кто-то, кто более знаком с VB.Net может проверить это для я так знаю, что делаю это правильно или нет.

ответ

4

В VB.NET при объявлении массива указывается максимальный индекс для каждого измерения, и они основаны на нуле. Итак, New Object(0) {} - это фактически массив с одним элементом. Из-за этого, чтобы объявить массив без элементов, вы используете New Object(-1) {}. См. here для более подробной информации.

В коде VB.NET, New Object(0 - 1) так же, как New Object(-1) - 0 - 1 часть просто ноль минус один, или -1, что означает нулевой длины массива Object а.

Эквивалент C# равен new Object[0], так как в C# вы указываете количество элементов при объявлении массива.

+0

Хорошо, я считаю, что это тот ответ, который я ищу, поскольку в фигурных скобках нет ничего, что можно было бы сделать после New Object (0 - 1). Спасибо за помощь! –

+1

Я не думаю, что наличие ничего в фигурных скобках особенно важно для того, чтобы быть массивом нулевой длины. например в VB.NET, 'New Object (4) {}' даст вам массив из 5 элементов, содержащий нули, поскольку исходные значения не заданы. '{}' Требуется только в VB.NET, даже если не инициализировать массив, в то время как это необязательно в C#. Это также показывает возможную причину стиля, используемого исходным программистом - «Новый объект (5 - 1) {}» может быть напоминанием о том, что VB.NET является немного странным в том, как объявляются размеры массива, а также «Новый Объект (4) {} '- оба массива - 5 элементов! – Mark