一段时间以来,我一直在研究Visual Basic .NET中的C样式指针。我遇到过http://support.microsoft.com/kb/199824?wa=wsignin1.0,但是我不知道这是正确的方法还是如何应用它。我已经在c语言中使用程序编写了一个简单的指针,并且我希望它在必要时将一行一行转换为带有注释的Visual Basic。这是C:
int main()
{
int *myNumber=3; //the * means it's a pointer
doubleIt(*myNumber); //we use the void, the * means it returns a value not address
printf("%d",myNumber); //we print the variable
return 0; //we terminate the function
}
void doubleIt(int input)
{
input*=2; //double the input
}
Run Code Online (Sandbox Code Playgroud)
您的C代码存在一些问题,其中一个是这样的:
int *myNumber=3; //the * means it's a pointer
Run Code Online (Sandbox Code Playgroud)
您必须先为它分配内存,才能为这样的指针分配一个值。
因此,您将执行以下操作:
int* myNumber = malloc(sizeof(int));
*myNumber = 3;
free(myNumber);
Run Code Online (Sandbox Code Playgroud)
VB.NET没有指针的概念。一切(即every Object)都是一个引用,这与不使用Interop所获得的指针差不多。如果需要进行互操作IntPtr,则可以使用一种类型来表示指针类型。
您的VB.NET程序可能看起来像这样:(请原谅我,如果语法不完全正确,已经有一段时间了)
Sub Main
Dim myNumber As Integer = 3
doubleIt(myNumber)
Console.WriteLine(myNumber)
End Sub
Sub doubleIt(ByRef val As Integer)
val *= 2
End Sub
Run Code Online (Sandbox Code Playgroud)