将VB.NET共享函数转换为C#

将VB.NET共享函数转换为C#,c#,C#,我用一个转换程序把这个vb转换成C# Public重载共享函数ExecuteReader(ByVal语句作为字符串,ByVal commandType作为commandType_ ByVal paramCollection作为ArrayList,ByVal ConnectionLegate作为OpenDatabaseConnection_ ByVal outputConnectionObject作为IDbConnection,ByVal CommandTimeout作为Int16)作为Insta

我用一个转换程序把这个vb转换成C#

Public重载共享函数ExecuteReader(ByVal语句作为字符串,ByVal commandType作为commandType_
ByVal paramCollection作为ArrayList,ByVal ConnectionLegate作为OpenDatabaseConnection_
ByVal outputConnectionObject作为IDbConnection,ByVal CommandTimeout作为Int16)作为InstantASP.Common.Data.IDataReader
返回PrivateExecuteReader(Configuration.AppSettings.DataProvider_
语句、commandType、paramCollection、ConnectionLegate、outputConnectionObject、CommandTimeout)
端函数
我不熟悉VB.NET,也不知道为什么这个转换器用这些引用将它转换为C#。我甚至不太使用ref,如果有的话,也不认为这是最好/最干净的转换方法。但我很难理解所有这些,包括转换,以及转换后这是否有任何意义

公共静态IDataReader ExecuteReader(string语句、CommandType CommandType、ArrayList paramCollection、OpenDatabaseConnectionConnectionLegate、IDbConnection outputConnectionObject、Int16 commandTimeout)
{
返回PrivateExecuteReader(ref-AppSettings.DataProvider(),ref语句,
ref命令类型、ref参数集合、ref CONNECTIONLEGATE、,
ref输出连接对象,ref命令超时);
}

它将
ref
放在这些参数上,因为
PrivateExecuteReader()
将它们声明为
ref
(C#)或
ByRef
(VB.NET)。别无选择

在VB.NET中,您只需传入参数,并且必须查看方法的声明(或Intellisense提示),以了解它是通过引用还是通过值。但是在C#中,如果一个方法将一个参数声明为
ref
,那么您还必须将要传递的参数标记为
ref
,这样您就清楚地知道它是通过引用传递的


在我看来,这是一个[基本上]正确的转换。

PrivateExecuteReader(…)
的参数列表是什么样子的?还不确定。我正在转换一个我将要购买的软件代码包,但还没有运行它。谢谢。我在ref AppSettings.DataProvider()上得到一个'ref'参数未被归类为变量错误。我猜您不能传入一个方法,只传入一个变量,对吗?DataProvider的实现是这样开始的:public static Providers DataProvider(){//get provider from web.config string strDataProvider=Convert.ToString(ConfigurationManager.AppSettings.get(“InstantASP_DataProvider”));如果
PrivateExecuteReader()
的第一个参数是Appsettings.DataProvider()
返回的任何参数,则可能必须将其插入变量中,然后传递该变量。如果不了解
Configuration.Appsettings.DataProvider
(方法与属性,返回类型)的声明,则无法判断,以及第一个参数类型
PrivateExecuteReader()
。您不是真正传入方法,而是传入方法返回的内容。但是
ref
需要一个存储引用(变量、字段、属性等)方法返回的结果并不满足这个要求。很酷,谢谢。我将提供程序值放入一个私有字段,并在整个类中使用它。无论如何,Cleaner是这样做的,VB.NET开发人员首先应该这样做