我使用转换器程序将此vb转换为C#
Public Overloads Shared Function ExecuteReader(ByVal statement As String, ByVal commandType As CommandType, _
ByVal paramCollection As ArrayList, ByVal connectionDelegate As OpenDatabaseConnection, _
ByVal outputConnectionObject As IDbConnection, ByVal CommandTimeout As Int16) As InstantASP.Common.Data.IDataReader
Return PrivateExecuteReader(Configuration.AppSettings.DataProvider, _
statement, commandType, paramCollection, connectionDelegate, outputConnectionObject, CommandTimeout)
End Function
我不熟悉VB.NET,我不知道为什么这个转换器将它转换为带有所有这些引用的C#。我甚至根本不使用ref,并且不认为这是转换它的最好/最干净的方法。但是我无法理解所有这些,包括转换,如果在转换后它有任何意义。
public static IDataReader ExecuteReader(string statement, CommandType commandType, ArrayList paramCollection, OpenDatabaseConnection connectionDelegate, IDbConnection outputConnectionObject, Int16 commandTimeout)
{
return PrivateExecuteReader(ref AppSettings.DataProvider(), ref statement,
ref commandType, ref paramCollection, ref connectionDelegate,
ref outputConnectionObject, ref commandTimeout);
}
答案 0 :(得分:5)
它将ref
放在这些参数上,因为PrivateExecuteReader()
将它们声明为ref
(C#)或ByRef
(VB.NET)。没有选择。
在VB.NET中,您只需传入您的参数,并且必须查看方法的声明(或智能感知提示)以了解它是通过引用还是通过值。但是在C#中,如果一个方法将参数声明为ref
,那么你还必须将你传递的参数标记为ref
,这样就可以明确地知道它是通过引用传递的。
看起来像是[大多]正确转换给我。