我正在使用 ASP.NET 和 Visual Basic 制作自定义表单,用于填写信息。单击按钮后,将调用一个函数,该函数从该表单中获取位信息,将它们放入一个对象中,然后将该对象添加到列表中。这被用于一种排队输入系统,因此表单将被多次编辑和提交。
出于某种原因,它没有在列表的下一个索引位置添加新对象,而是替换了 0 处的任何内容。因此,当时列表中只有一个对象。
这是我的自定义对象,目前位于我的 _Default 类之上:
Public Class QueueItem
Public Property _TestName As String
Public Property _ValueID As String
Public Property _MathOperator As String
Public Property _ValueInput As Integer
Public Sub New()
End Sub
Public Sub New(ByVal TestName As String, ByVal ValueID As String, ByVal MathOperator As String, ByVal ValueInput As Integer)
_TestName = TestName
_ValueID = ValueID
_MathOperator = MathOperator
_ValueInput = ValueInput
End Sub
End Class
该列表在我的 Page_Load 函数上方、_Default 类中声明,并且是公共的。这是该列表定义:
Public QueueList As List(Of QueueItem) = New List(Of QueueItem)()
而且,当按下“添加到队列”按钮时,会调用以下内容:
Protected Sub AddToQueueButton_Click(sender As Object, e As EventArgs) Handles AddToQueueButton.Click
'Adds a new QueueItem to the QueueList
'Values pulled from the dropdown lists in the custom form
QueueList.Add(New QueueItem() With {
._TestName = TestName.SelectedValue,
._ValueID = ValueID.SelectedValue,
._MathOperator = MathOperator.SelectedValue,
._ValueInput = ValueInput.Text
})
'Below section is for testing
Dim test1 As String = QueueList(0)._TestName
Dim test2 As String = QueueList(0)._ValueID
Dim test3 As String = QueueList(0)._MathOperator
Dim test4 As String = QueueList(0)._ValueInput
Dim testmessage As String = test1 + " | " + test2 + " | " + test3 + " | " + test4
Dim count = QueueList.Count
Dim capacity = QueueList.Capacity
Response.Write("<script language='javascript'>alert('" + testmessage + "');</script>")
End Sub
所以,正如你所看到的,我有一些测试变量和我用来确保它工作的东西。每次调用它时,都会将一个对象添加到列表中,我会查看列表的计数和容量,并在警报中显示所有信息。
警报的此信息始终从索引 0 读取。因此,我向列表添加信息多少次都无关紧要,0 应该保持不变,对象应该添加到 1,然后是 2,依此类推。正确的?
好吧,每当我提交新信息时,都会发生 0 变化,而且计数或容量都不会超过第一个条目。它们总是显示为好像列表中只有一项。
这是我两次运行队列输入表单,最后有两个不同的数字:
第一次运行:
第二次运行:
因为我总是从索引 0 读取,所以最后的数字不应该改变。它应该给我与索引 0 处的对象关联的数字。而且,List.Add 函数应该使计数和容量增加。但是,这一切都没有发生。相反,它似乎正在替换 0 时的内容。
如果有人对如何解决此问题有任何提示或可以提示我可能发生的事情,那将不胜感激。




