Это называется строкой фиксированной длины. Точного эквивалента в VB.NET нет.
Изменить: Хорошо, есть VBFixedStringAttribute, но я почти уверен, что он существует исключительно для того, чтобы автоматические инструменты миграции могли упростить преобразование кода VB6 в VB.NET для вас, и на самом деле это не способ .NET делать что-то . Также см. предупреждения в статье, чтобы узнать, почему это не совсем то же самое, что и строка фиксированной длины в VB6.
Как правило, строки фиксированной длины используются только в VB6, если вы читаете записи фиксированного размера из файла или по сети (т. е. анализируете заголовки в фрейме протокола).
Например, у вас может быть файл, содержащий набор записей фиксированной длины, имеющих формат (целое число, 1-символьная строка, двойное число), который вы могли бы представить в VB6 как пользователь. - определенный тип:
Public Type Record
anInteger As Integer
aSingleCharacter As String * 1
aDouble As Double
End Type
Таким образом, код VB6, который читает из файла, содержащего записи в этом формате, может прочитать каждую запись фиксированного размера, хранящуюся в файле, и, в частности, он будет читать только 1 байт для aSingleCharacter
. Без * 1
VB6 не знал бы, сколько символов нужно прочитать из файла, поскольку String
обычно может иметь любое количество символов.
В VB.NET вы можете выполнить одно из следующих действий, в зависимости от ваших потребностей:
Если длина имеет значение (например, вам нужно прочитать ровно один байт из какого-либо источника данных), рассмотрите возможность использования вместо этого массива, такого как
Dim aSingleByteArray(1) As Byte
В качестве альтернативы вы можете использовать один из поток классы. В частности, если вы читаете данные из сетевого сокета или файла, рассмотрите возможность использования NetworkStream или FileStream соответственно. Поток предназначен для побайтового доступа (т. е. необработанного двоичного доступа). StreamReader связан класс, который упрощает чтение данных, когда они основаны на тексте, так что это может быть хорошо, если вы, например, читаете текстовый файл. В противном случае (при работе с двоичными данными) придерживайтесь одного из классов Stream.
Если длина не имеет значения, вы можете просто использовать обычный String
. То есть:
Dim aNormalString As String
Какой ответ правильный, зависит от того, почему он был объявлен таким образом в исходном коде VB6.
person
Mike Spross
schedule
06.03.2012
On Error
,Goto
иResume
, хотя исключения — это предполагаемый (и более мощный) способ обработки ошибок в коде .NET ;-) - person Mike Spross   schedule 06.03.2012Microsoft.VisualBasic.Compatibility
намного хуже, но пространство именMicrosoft.VisualBasic
может вызвать головную боль. Частично проблема заключается в том, что он разработан так, чтобы работать так же, как VB6, что это сбивает с толку, когда на самом деле он не работает так же. Например, они даже повторно реализовали большинство функций даты и времени VB6 (таких какDateSerial
и другие), хотя в среде .NET уже есть классы, выполняющие все эти действия. Другой пример: это сбивает с толку, когда половина кода использует старый стильErrObject
, а половина использует, например, исключения .NET. - person Mike Spross   schedule 06.03.2012