Поделиться через


Рекомендации по обновлению. Необходимость избегать использования массивов и строк заданной длины в пользовательских типах

Обновлен: Ноябрь 2007

Благодаря изменениям, обеспечивающим полную совместимость массивов и структур Visual Basic 2008 (известные ранее как пользовательские типы) с другими языками Visual Studio .NET, в языке не поддерживаются строки фиксированной длины. В большинстве случаев это не вызывает трудностей, поскольку существует класс, обеспечивающий поведение строк фиксированной длины. Поэтому обновление кода

Dim FixedLengthString As String * 100

происходит следующим образом:

Dim FixedLengthString As New VB6.FixedLengthString(100)

Однако использование данных строк в структурах может вызвать затруднения. Проблема состоит в том, что класс строк фиксированной длины не создается автоматически при создании структуры. Аналогично, одновременно со структурой не создаются массивы фиксированного размера.

При обновлении кода пользовательские типы с массивами и строками фиксированной длины преобразуются в структуры с комментариями, в которых содержится напоминание о необходимости инициализации этих строк и массивов перед обращением к структуре в коде. Однако этих изменений можно избежать, если использовать в качестве пользовательских типов в Visual Basic 6.0 обычные строки вместо строк фиксированной длины и неинициализированные массивы вместо массивов фиксированного размера. Пример

Private Type uType
    anArray(5) As Integer
    aFixedString As String * 100
End Type
Sub SomeFunction()
    Dim aVariable As uType
End Sub

можно заменить на:

Private Type uType
    anArray() As Integer
    aFixedString As String
End Type
Sub SomeFunction()
    Dim aVariable As uType
    ReDim aVariable.anArray(5) As Integer
    aVariable.aFixedString = String$(100, " ")
End Sub

См. также

Другие ресурсы

Рекомендации по обновлению, касающиеся языка