方法参数匹配签名,但仍然出错

Jas*_*son 0 c# asp.net parameter-passing method-signature

我正在将VB库转换为C#.我的一个方法在VB中有以下签名:

Private Shared Sub FillOrder(ByVal row As DataRowView, ByRef o As Order)
Run Code Online (Sandbox Code Playgroud)

在C#中我把它转换为:

private static void FillOrder(DataRowView row, ref Order o)
Run Code Online (Sandbox Code Playgroud)

从我的Order类中的构造函数,我调用这样的FillOrder()方法:

DataView dv = //[get the data]
if (dv.Count > 0)
{
    FillOrder(dv[0], this);
}
Run Code Online (Sandbox Code Playgroud)

在VB中,这有效:

Dim dv As DataView = '[get data]'
If dv.Count > 0 Then
    FillOrder(dv.Item(0), Me)
End If
Run Code Online (Sandbox Code Playgroud)

但是,在C#文件的VS10中,我在此调用下遇到红色波形,并出现以下错误:

[方法]的最佳重载方法匹配有一些无效的参数

这是VB中的工作代码.我究竟做错了什么?

SLa*_*aks 5

您需要传递第二个参数ref.
但是,你不能传递thisref(除非它是一个结构),所以你需要一个临时变量.

请注意,参数几乎绝对不应该ref在第一位.