Рекомендации по обновлению. Необходимость избегать использования массивов и строк заданной длины в пользовательских типах
Обновлен: Ноябрь 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