Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将一些VB.NET代码转换为C#-需要建议吗_C#_Vb.net - Fatal编程技术网

将一些VB.NET代码转换为C#-需要建议吗

将一些VB.NET代码转换为C#-需要建议吗,c#,vb.net,C#,Vb.net,我正在使用曾经打开过的名为VZones的原始MMO,它们有一个dll文件,允许您从该dll调用函数,在程序中执行某些操作 我发现了一些VB.NET代码,我遇到的问题是将其转换为一种与C#一起工作的方式(使用VS2017) 您可以使用以下命令设置DLL调用,该命令可以正常工作: [DllImport("vzdapi.dll", CharSet = CharSet.Ansi, SetLastError = true)] public static extern string DapiGetText(

我正在使用曾经打开过的名为VZones的原始MMO,它们有一个dll文件,允许您从该dll调用函数,在程序中执行某些操作

我发现了一些VB.NET代码,我遇到的问题是将其转换为一种与C#一起工作的方式(使用VS2017)

您可以使用以下命令设置DLL调用,该命令可以正常工作:

[DllImport("vzdapi.dll", CharSet = CharSet.Ansi, SetLastError = true)]
public static extern string DapiGetText(string BufferIn, int LengthIn, int Timeout);
问题是我需要将来自其他人的VB.NET代码转换为在C#中工作的代码。我尝试了一些不同的选择,但程序只是关闭,从来没有给我一个错误

object obj1 = (object)new string(char.MinValue, 32678);
vzText.Text = this.DapiGetText(Conversions.ToString(obj1), Strings.Len(RuntimeHelpers.GetObjectValue(obj1)), 1500);
问题出现在Conversions.ToString部分,我当然尝试过只生成obj1.ToString(),这可能很好,但我认为遇到的问题是它试图运行中间代码“Strings.Len(RuntimeHelpers.GetObjectValue(obj1))”


有没有人能帮我把这件事变成在C#中能用的东西?谢谢

我想知道转换是否必要,因为您定义的初始对象已经是字符串,请尝试以下解决方案:


从Len函数返回将由FilePut函数写入文件的大小。所以它基本上得到了长度。在c语言中,您所要做的就是将
转换为字符串()
,然后调用
Length
属性。你试过了吗?为
RunTimeHelpers
类添加对
System.Runtime.CompilerServices
的引用可能我缺少一些东西,但是为什么你首先需要将
字符串转换为
对象
<代码>字符串str1=新字符串(char.MinValue,32678)
vzText.Text=this.DapiGetText(str1,str1.Length,1500)您需要首先修复C#声明,它有一个非常严重的bug。不幸的是,它并没有足够频繁地破坏一个程序。第一个参数必须是StringBuilder,而不是string。必需,因为字符串是不可变的,并且此函数希望修改字符串。调用它的正确方法是首先使用StringBuilder(int)构造函数创建字符串缓冲区,使用一个足够大的值来容纳预期返回的字符串。将其容量作为第二个参数传递。调用后的ToString(),VB代码在哪里?这个答案和上面的一个答案基本上让位于下面的输出,它现在工作得很好,所以谢谢!string str1=新字符串(char.MinValue,32678);VZText.Text=DapiGetText(str1,str1.Length,1000);
string obj = new string(char.MinValue, Int16.MaxValue);
vzText.Text = this.DapiGetText(obj, obj.Length, 1500);