VB 6.0中的字符串(33,0)和C#中的等价物

apr*_*tik 4 c# vb6

UserName = String(33, 0)VB 6.0中的含义是什么,C#中的等价物是什么.

请帮助我在将VB 6.0代码转换为C#时遇到错误.

提前致谢.

lin*_*ogl 6

String 在VB6中是一个函数,它返回一个包含指定长度的重复字符串的字符串.

String(number,character)
Run Code Online (Sandbox Code Playgroud)

例:

strTest = String(5, "a")
' strTest = "aaaaa"

strTest = String(5, 97)
' strTest = "aaaaa" (97 is the ASCII code for "a")
Run Code Online (Sandbox Code Playgroud)

在这种情况下,String(33,0)将返回包含33个空字符的字符串.

C#中的等价物将是

UserName = new String('\0', 33);
Run Code Online (Sandbox Code Playgroud)


Dav*_*nan 5

在 VB6 中,该函数创建一个包含 33 个字符的字符串,所有这些字符的序数值都为零。

通常你这样做是因为你将把字符串传递给一些填充缓冲区的本机函数。在 C# 中,最接近的等价物是创建一个StringBuilder实例,然后将其传递给 ap/invoke 函数调用中的本机代码。

我认为直接翻译那一行代码并不是特别有用。该代码存在于上下文中,我强烈怀疑上下文很重要。

因此,虽然您可以创建一个string包含 33 个空字符的新 C# ,但这样做有什么意义呢?由于 .net 字符串是不可变的,因此您不能对它感兴趣。在您的 VB6 代码中,您肯定会改变该对象,因此StringBuilder在我看来,这是最有可能完成这项工作的工具。