Mat*_*ima 7 c# vb.net parameters out
我在c#中有一个项目正在使用另一个用vb.net编写的项目.我目前能够修改它们.
我在VB项目中有一个方法,如:
Public Sub MethodName(ByVal param1 As String, ByRef param2 As String)
param2 = param1 + 1
End Sub
Run Code Online (Sandbox Code Playgroud)
我无法使用C#中的out关键字调用此方法:
public void CallOtherMethod()
{
string param1 ="test";
string param2;
provider.AddTransaction(param1, out param2);
}
Run Code Online (Sandbox Code Playgroud)
VB.Net中的ByRef关键字不应该具有"ref"和"out"的能力吗?
我应该选择参考吗?
Joe*_*oey 14
到运行时ref并且out可以相当互换,因为它们都只是传递引用.但是,outIL中的附加属性带有前缀:
public void y(ref int a)
public void z(out int a)
Run Code Online (Sandbox Code Playgroud)
变成
.method public hidebysig instance void y(int32& a)
.method public hidebysig instance void z([out] int32& a)
Run Code Online (Sandbox Code Playgroud)
这使得C#编译器能够区分这两者并添加具有的特殊语义out,即out参数在进入方法之前不需要具有指定的值,并且必须在退出方法之前为其分配值.
相比之下,ByRef在VB中只提供了ref,但没有提供额外的语义out.它out在VB中没有相应的东西.
| 归档时间: |
|
| 查看次数: |
13555 次 |
| 最近记录: |