【发布时间】:2010-12-22 20:38:50
【问题描述】:
我正在将 VB 库转换为 C#。我的一种方法在 VB 中具有以下签名:
Private Shared Sub FillOrder(ByVal row As DataRowView, ByRef o As Order)
在 C# 中我将其转换为:
private static void FillOrder(DataRowView row, ref Order o)
从我的 Order 类中的构造函数,我正在调用 FillOrder() 方法,如下所示:
DataView dv = //[get the data]
if (dv.Count > 0)
{
FillOrder(dv[0], this);
}
在 VB 中,这是可行的:
Dim dv As DataView = '[get data]'
If dv.Count > 0 Then
FillOrder(dv.Item(0), Me)
End If
但是,在 C# 文件的 VS10 中,我在此调用下得到一个红色曲线,并出现以下错误:
[该方法]的最佳重载方法匹配有一些无效参数
这是 VB 中的工作代码。我做错了什么?
【问题讨论】:
-
我想知道它是如何工作的:
this应该是只读的,对吧?所以你不应该拥有ref this。 -
在 C# 中,您不需要为
Order参数添加ref关键字。它是一个引用类型,你可能不需要通过 ref 传递它。 -
@Oded:什么?
ref和ByRef没有区别。 -
除非你能给出很好的解释,否则你一开始就不应该使用
ref参数。 -
@slaks 使用
ref参数有什么问题?
标签: c# asp.net parameter-passing method-signature