2013-03-21 47 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

相关问题