4

在 VB 6.0 中是什么意思,UserName = String(33, 0)在 C# 中是什么意思。

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

提前致谢。

4

4 回答 4

6

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

String(number,character)

例子:

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

strTest = String(5, 97)
' strTest = "aaaaa" (97 is the ASCII code for "a")

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

C# 中的等价物是

UserName = new String('\0', 33);
于 2013-07-25T11:10:41.957 回答
5

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

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

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

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

于 2013-07-25T11:09:16.567 回答
2

我相信您正在寻找:

UserName = new String((Char)0, 33);

参考这个来了解 VB6 方法的作用。

于 2013-07-25T11:10:08.137 回答
-1

您可以创建一个执行此操作的函数,或者可以对类进行扩展String

using System;

public class Program
{
    public static void Main()
    {
        Console.WriteLine(strGen("01",3));
    }
    //param s is the string that you can generete and the n param is the how many times.
    private static string strGen(String s, int n){
        string r = string.Empty;
        for (int x = 1; x <= n; x++)
            r += string.Copy(s);
        return r;
    }
}
于 2020-02-05T00:40:26.260 回答