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

时间:2013-07-25 11:01:58

标签: c# vb6

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

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

提前致谢。

4 个答案:

答案 0 :(得分:5)

VB6中的

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

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);

答案 1 :(得分:4)

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

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

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

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

答案 2 :(得分:2)

我相信你在寻找:

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

参考this了解VB6方法的作用。

答案 3 :(得分:0)

您可以创建执行此操作的函数,或者o可以扩展类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;
    }
}