Log*_*man 7 vb.net string vb6 vba vb6-migration
我有一些需要迁移到VB.NET的VB6代码,我想查询这行代码,看看是否有办法在.NET中实现它
Dim strChar1 As String * 1
Run Code Online (Sandbox Code Playgroud)
Intellisense一直告诉我语句结束是预料之中的.
Mik*_*oss 10
这被称为"固定长度"字符串.在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将不知道从文件中读取多少个字符,因为a String通常可以有任意数量的字符.
在VB.NET中,您可以根据需要执行以下操作之一:
如果长度很重要(例如,您需要从某个数据源中读取一个字节),请考虑使用数组,例如
Dim aSingleByteArray(1) As Byte
或者,您可以使用其中一个Stream类.特别是,如果要从网络套接字或文件中读取数据,请分别考虑使用NetworkStream或FileStream.甲流是为字节对字节访问(即原始二进制访问).StreamReader是一个相关的类,它简化了基于文本的数据读取,因此,例如,如果您正在读取文本文件,这可能会很好.否则(如果处理二进制数据),坚持使用其中一个Stream类.
如果长度无关紧要,您可以使用"正常" String.也就是说:
Dim aNormalString As String
哪个答案是"正确的"真的取决于为什么在原始的VB6代码中声明它的原因.
| 归档时间: |
|
| 查看次数: |
12585 次 |
| 最近记录: |