C# VB6.0中的字符串(33,0)和C中的等效字符串#

C# VB6.0中的字符串(33,0)和C中的等效字符串#,c#,vb6,C#,Vb6,在VB6.0中,UserName=String(33,0)的含义是什么?在C#中,它的等价物是什么 请帮助我将VB6.0代码转换为C#时出错 提前感谢。在VB6中,该函数创建一个包含33个字符的字符串,所有字符的序数值均为零 通常,这样做是因为您将要将字符串传递给某个本机函数,该函数将填充缓冲区。在C#中,与此最接近的等效方法是创建一个StringBuilder实例,然后在p/invoke函数调用中将其传递给本机代码 我认为直接翻译这一行代码并不是特别有用。该代码存在于上下文中,我强烈怀疑上下文

在VB6.0中,
UserName=String(33,0)
的含义是什么?在C#中,它的等价物是什么

请帮助我将VB6.0代码转换为C#时出错


提前感谢。

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

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

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


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

我相信您正在寻找:

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

VB6方法所做操作的参考。

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#中的等价物是


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

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;
    }
}
使用系统;
公共课程
{
公共静态void Main()
{
控制台写入线(strGen(“01”,3));
}
//param s是可以由generate生成的字符串,n param是多少次。
私有静态字符串strGen(字符串s,int n){
string r=string.Empty;

对于(intx=1;x我不熟悉vb。这个
String()
到底做什么?UserName=String(33,0)生成一个编译器错误…您测试了它吗,它做了什么?在VB6代码中,用户名接下来会发生什么?您是否有机会将它传递给名为
GetUserName
的Win32函数?非常感谢…现在我了解了这个概念。实际上它返回子类型String的变体。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;
    }
}