2013-03-21 43 views
2

我遇到了一些我想解釋的內容。我有一個函數InitializeValues()來設置一個組合框,並將數據源設置爲一個數據表。使用公共方法GetFileSourceData從不使用參數的類DGVMain_Functions的實例中檢索數據表。
問題是,調用GetFileSourceData(MyConnectionString)將實際編譯並運行。當數據表返回並試圖設置爲cbo的數據源時發生運行時錯誤。正常調用GetFileSourceData()正常工作。 我問過另一位開發人員,他認爲我有一些陳舊的參考,因此我清理了該項目,然後刪除了我的調試文件夾中的所有內容,然後重新構建,但它仍然具有相同的行爲。Vb.net:調用函數不匹配原型通過編譯器檢查

我的問題是這樣的,爲什麼編譯器接受這一點,而不是拋出語法錯誤,此外爲什麼它甚至會到達可以切入這個不應該存在的函數的地步,並讓它失敗返回?

編輯:把選項嚴格上,確實讓編譯器捕捉這一點。 「Option Strict On禁止從'String'到'Integer'的隱式轉換,但這仍然不是我想看到的錯誤,我想知道它爲什麼不顯示」沒有這樣的重載/定義該功能存在」

的錯誤是這樣的:

An error occurred creating the form. See Exception.InnerException for details. The error is: ERROR: ERROR: Conversion from string "user id=XXXX;data source=XXXXX" to type 'Integer' is not valid.Microsoft.VisualBasicFileProcessor. "InnerException = {"Input string was not in a correct format."}"

Private Sub InitializeValues() 
    cboFileSource.DisplayMember = "filesource" 
    cboFileSource.ValueMember = "filesource" 
    'first call works fine since it matches 
    cboFileSource.DataSource = DgvMain_functs.GetFileSourceData() 
    'below is the call that gets through the complier and actually runs, fails on return 
    cboFileSource.DataSource = DgvMain_functs.GetFileSourceData(MyConnectionString)   
End Sub 

Public Function GetFileSourceData() As DataTable 
    Try 
    Dim dt As DataTable 
    Dim strSQL As String = "select distinct filesource from FileUpload_FolderPath" 
    dt = SqlHelper.ExecuteDataset(MyConnectionString, CommandType.Text, strSQL).Tables(0) 
    Return dt 
    Catch ex As Exception 
    Throw New Exception("Error in DGVMain_Functions: " & ex.Message & ex.Source) 
    End Try 
End Function 
+0

我用的是默認的。選項,不知道那些是atm。你在問「顯式」和「嚴格」選項標誌r飛行?現在你已經提出了讓我看看這些。 – 2013-03-21 16:57:39

+0

奇怪。我可以確認它完全用Option Strict On編譯,這行'ListBox1.DataSource = GetFileSourceData(CInt(「123」))'('Option Strict'建議通過'CInt()'''轉換''123「')。 – Neolisk 2013-03-22 01:01:38

回答

0

正如你在您的評論暗示,肯定顯式的選項在將解決這個問題

+0

其實Option Explicit On沒有捕獲它,只有Option Strict On沒有。但是這仍然不能解釋當定義沒有時接受參數的函數的問題。在我的評論中,我實際上是迴應了一位評論者,但是他的評論在過去幾分鐘因爲某種原因而消失,當時他問我有什麼標記。 – 2013-03-21 17:12:40

相關問題