C# VB6.0中的字符串(33,0)和C中的等效字符串#
在VB6.0中,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函数调用中将其传递给本机代码 我认为直接翻译这一行代码并不是特别有用。该代码存在于上下文中,我强烈怀疑上下文
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;
}
}