无法向VB.NET中的列表添加项

  • 本文关键字:列表 添加 NET VB vb.net
  • 更新时间 :
  • 英文 :


大家早上好!所以我收到了这个暑假的家庭作业,我必须创建一个程序来存储电影列表并显示它们,但问题是没有定义的电影数量,所以我不能使用我一直使用的常量方法,所以我试着用变量代替,但每当我按两次输入按钮时,应用程序崩溃了,我得到了错误"索引超过矩阵限制";下面是模块

中的代码
Module Module1
Public Structure Film
Public Titolo As String
Public Autore As String
Public Incasso As Integer
Public Nazionalita As String
End Structure
Public i As Integer = 0
Public Flm(i) As Film
End Module

输入部分

Public Class frmInput
Private Sub btnInserisci_Click(sender As Object, e As EventArgs) Handles btnInserisci.Click
If IsNumeric(txtIncasso.Text) = False Then
MsgBox("L'incasso deve essere un valore numerico", MsgBoxStyle.Exclamation, "Attenzione")
ElseIf txtTitolo.Text = "" Or txtAutore.Text = "" Or txtNazionalita.Text = "" Then
MsgBox("Uno o più valori sono vuoti", MsgBoxStyle.Exclamation, "Attenzione")
Else
Flm(i).Titolo = txtTitolo.Text
Flm(i).Autore = txtAutore.Text
Flm(i).Incasso = txtIncasso.Text
Flm(i).Nazionalita = txtNazionalita.Text
i += 1
End If
End Sub
End Class

您应该使用List(Of Film)来存储接收到的输入。
像这样的泛型列表没有实际限制,并且可以在添加元素时增长

Public Flm As List(Of Film) = new List(Of Film)
....
Else
Dim f as Film = new Film()
f.Titolo = txtTitolo.Text
f.Autore = txtAutore.Text
f.Incasso = txtIncasso.Text
f.Nazionalita = txtNazionalita.Text
Flm.Add(f)
End If

List(Of Film)可以像数组一样使用

For x As Integer = 0 To Flm.Count -1 Step 1
Console.WriteLine("Film #" & x+1)
Console.WriteLine("Titolo = " & Flm(x).Titolo)
.....
Next

当然你可以用更简单的foreach

来遍历它
For Each Film f in Flm
Console.WriteLine("Film #" & x+1)
Console.WriteLine("Titolo = " & f.Titolo)
.....
Next

虽然其他人已经提到使用List(这可能是合适的),但您还提到这是一个家庭作业,因此您可能需要或必须使用您所展示的更传统的数组。记住这一点,也让你知道你的问题是什么。您正在增加i,而不是数组。

Public i As Integer = 0
Public Flm(i) As Film

因此,Flm是0到0,一个元素。

你加上这个,一切都可以。

你增加i, good,i += 1

然而,你不增加数组,Flm()。增加i不会自动增加数组,Flm().

您需要使用:ReDim Preserve

因此…变化:

Else
Flm(i).Titolo = txtTitolo.Text

:

Else
ReDim Preserve Flm(i)
Flm(i).Titolo = txtTitolo.Text

最后,IsNumericMsgBox是VB6时代的残余,有vb.net的等同物。此外,使用i作为全局/公共变量确实不好。在所有局部子程序和小循环等函数中使用i是非常常见的,标准的,它被使用和丢失。如果你看一下几乎所有的代码示例,你会看到i被用作整数计数器。

相关内容

  • 没有找到相关文章

最新更新