C#,如何在函数的参数里填写返回值?
C# 里如何实现,下面C的功能呢?
即将封装的函数GetID里 读取到的数据,填写到该封装函数的参数里
C/C++ code
apiReturn _stdcall GetID(SOCKET hSocket, BYTE *ID)
{
BYTE put[MAX_PACKET_LEN];
BYTE get[MAX_PACKET_LEN];
put[0]=0x02; //
put[1]=0x14; //
put[2]=0;
if (!Packet(hSocket,put,get))
return _net_error;
memcpy(ID, &get[1], 12);
return _OK;
}
------解决方案--------------------GetID(SOCKET hSocket, ref byte ID)
{
ID=xxx;
}
------解决方案--------------------out
------解决方案--------------------ref out 这两个关键字,MSDN查查吧
------解决方案--------------------publib void GetID(out string id)
{
id=string.empty;
id="testString";
}
------解决方案--------------------ref和out的差别,
ref 在传参之前必须赋值
out 传参之前不需要赋值,但必须在函数内部为其赋值。
int a = 0;
Func(ref a);//可以
int a;
Func(ref a); //不可以
int a;
Func (out a);
Func(out a)
{
a =0;//必须在内部为其赋值
}
一般跟C函数中指针对应的都用ref,因为在传递指针的时候肯定不能给个空指针,给空指针你根本就没法处理了。