函数返回true,但在赋值时它变为false

Ton*_*ams 0 vb.net winforms

我调用一个函数(SaveChanges)来访问我的业务/数据层,并将所有更改保存到标记为添加或更新并标记为要处理的字段.此功能用于在60多分钟前完成工作.

发生的事情是突然该函数返回false.在通过代码调试之后,当它命中Return时,本地布尔值设置为True ...但是当它返回到调用方法(并使用返回值)时,它现在是False.

正如我所说,我逐行检查并调试它,然后我添加了一块手表.有趣的是,有一个点将布尔值设置为false,当我在该点放置一个断点时,它永远不会到达.

这是功能:

Private Function SaveChanges() As Boolean

    Dim blnSaved As Boolean = True

    Dim saveableRows As List(Of DataRow) = (From d As DataRow In _listData.Tables(0).Rows _
                                            Where Not d("Marking") = "Duplicate" _
                                            And d("Process") = True _
                                            Select d).ToList()


    If saveableRows.Count > 0 Then

        For Each drRow As DataRow In saveableRows

            Dim data As IDataEntity = DataEntities.GetData(_tableName)

            If drRow("Marking") = "Update" Then

                'UPDATE
                data.UpdateItem(drRow.ItemArray)

            Else

                'ADD
                data.AddItem(drRow.ItemArray)

            End If

            If data.HasErrors Then

                blnSaved = False 'Never reaches this part ... !?!?!

            End If

        Next

    Else

        blnSaved = True

    End If

End Function
Run Code Online (Sandbox Code Playgroud)

以下是我如何使用该功能:

If SaveChanges() Then

        Dim frmTableView As frmTableView = New frmTableView(_listData.Tables(0).TableName)

        If Not Me.MdiParent Is Nothing Then

            frmTableView.MdiParent = Me.MdiParent

        End If

        frmTableView.Show()

        Me.Close()

    Else

        MessageBox.Show("Unable to save the list. IT has been notified.", "Save Failed", MessageBoxButtons.OK, MessageBoxIcon.Error)

    End If
Run Code Online (Sandbox Code Playgroud)

我花了太多时间在这上面,并认为是时候寻求帮助了.

谢谢

Joe*_*ton 6

你永远不会返回你的布尔值.加:

Return blnSaved
Run Code Online (Sandbox Code Playgroud)

在功能的底部.