2011-06-14 29 views
3

我用一個轉換程序將這個VB到C#轉換一個VB.NET共享功能,以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); 
} 
+2

參數列表對於'PrivateExecuteReader(...)'是什麼樣的? – aligray 2011-06-14 03:02:26

+0

還不確定。我正在轉換一個我將要購買的軟件代碼包,但還沒有運行。 – PositiveGuy 2011-06-14 03:15:02

回答

5

它把ref這些參數,因爲PrivateExecuteReader()聲明他們作爲ref(C#)或ByRef(VB.NET)。沒有選擇。

在VB.NET中,您只需傳入參數並且必須查看方法的聲明(或Intellisense提示),以瞭解它是通過引用還是通過值。但是在C#中,如果一個方法聲明一個參數爲ref,那麼你還必須將你傳遞的參數標記爲ref,以便明確你明白它是通過引用傳遞的。

看起來像[主要]正確的轉換給我。

+0

謝謝。我得到一個'ref'參數不屬於ref AppSettings.DataProvider()的變量錯誤。我猜你不能傳入一個方法,只是一個變量是正確的? – PositiveGuy 2011-06-14 03:43:07

+0

DataProvider的實施開始是這樣的:\t \t公共靜態提供商的DataProvider() \t \t { \t \t \t //從web.config中 \t \t \t串strDataProvider = Convert.ToString提供商(ConfigurationManager.AppSettings.Get( 「InstantASP_DataProvider」)); – PositiveGuy 2011-06-14 03:45:28

+0

如果'PrivateExecuteReader()'的第一個參數是'Appsettings.DataProvider()'返回的任何內容,則可能需要將其粘貼到一個變量中,然後傳遞該變量。如果不瞭解更多關於'Configuration.AppSettings.DataProvider'(方法vs屬性,返回類型)的聲明以及'PrivateExecuteReader()'的第一個參數類型,就無法分辨出來。 – 2011-06-14 03:58:51