如何在VB.NET中声明一个固定长度的字符串?

Rac*_*hel 13 vb.net vb6-migration

我如何声明这样的字符串:

Dim strBuff As String * 256
Run Code Online (Sandbox Code Playgroud)

在VB.NET中?

Spe*_*ort 7

使用VBFixedString属性.请在此处查看MSDN信息

<VBFixedString(256)>Dim strBuff As String
Run Code Online (Sandbox Code Playgroud)

  • 注释本身非常不足.在上面的例子中将`strBuff`设置为VB6中的空字符串("")仍然会产生一个256个空格的字符串.这个.NET等价物没有.注释看起来主要是信息性的,并且在大多数情况下它不会强制执行*字符串长度(我相信FilePut使用这些信息). (2认同)

xpd*_*pda 6

这取决于你打算使用字符串的内容.如果您将其用于文件输入和输出,则可能需要使用字节数组来避免编码问题.在vb.net中,256个字符的字符串可能超过256个字节.

Dim strBuff(256) as byte
Run Code Online (Sandbox Code Playgroud)

您可以使用编码从字节转换为字符串

Dim s As String
Dim b(256) As Byte
Dim enc As New System.Text.UTF8Encoding
...
s = enc.GetString(b)
Run Code Online (Sandbox Code Playgroud)

如果需要使用它来接收数据,可以为字符串分配256个单字节字符,但vb.net中的参数传递可能与vb6不同.

s = New String(" ", 256)
Run Code Online (Sandbox Code Playgroud)

此外,您可以使用vbFixedString.但是,我不确定它到底是什么,因为当你为这种声明的变量分配一个不同长度的字符串时,它就变成了新的长度.

<VBFixedString(6)> Public s As String
s = "1234567890" ' len(s) is now 10
Run Code Online (Sandbox Code Playgroud)


Adr*_*der -1

你有没有尝试过

Dim strBuff as String
Run Code Online (Sandbox Code Playgroud)

另请参阅使用 VB.NET 在 .NET 中处理字符串

本教程介绍了如何使用 VB.NET 在 .NET 中表示字符串以及如何在 .NET 类库类的帮助下使用它们。