【问题标题】:How do I replace an item in List(Of String) in VB.NET?如何在 VB.NET 中替换 List(Of String) 中的项目?
【发布时间】:2014-08-02 01:37:39
【问题描述】:

我的一个项目有问题。在其中,我面临着索引问题的障碍。我有一个以这种方式实例化的列表:

Public answers As List(Of String) = New List(Of String)

通过此代码将项目添加到此列表中:

Dim correctanswer As String = "" 'except the user changes the value with the GUI
frmMain.answers.Add(correctanswer)

(顺便说一下,我只包含了这个怪物项目的相关部分,所以如果需要,我会根据要求发布更多代码。)

这段代码运行良好;但是,我试图允许用户随意修改每个列表项。我尝试通过以下方法做到这一点:

frmMain.answers.ElementAt(i) = correctanswer '(where 'i' is the index in question)

编译器不喜欢这样。它在对我大喊大叫。

表达式不是一个值,因此不能作为赋值的目标。

现在,我在尝试替换类似列表中的项目时遇到过这个问题;但是,这些项目是我自己的自定义类。这只是一个字符串列表。我也尝试了另一种方法:

frmMain.RemoveAt(i)
frmMain.Insert(i, correctanswer)

问题在于,列表的顺序被混淆了。索引会四处移动,最终会造成混乱,而不是按照我的意愿去做。

有人可以帮帮我吗?

【问题讨论】:

    标签: .net vb.net list


    【解决方案1】:

    frmMain.answers(i) = correctanswer

    这是一个小例子:

    Dim answers As List(Of String) = New List(Of String)
    answers.Add("Answer A")
    answers.Add("Answer B")
    answers.Add("Answer C")
    Dim correctanswer As String = ""
    
    answers(1) = correctanswer
    For Each str As String In answers
    Console.WriteLine(str)
    Next
    

    这应该打印出来:

    回答 A

    回答 C

    【讨论】:

    • 应该是frmMain.answers(i),因为这是VB.NET。
    • 取决于frmMain是什么,和frmMain的关系。猜测可能是 frmMain 是项目中一个表单的名称,而 answers 是 frmMain 类的一部分。如果是这样,则意味着 OP 正在修改默认实例。如果这是真的,那么 Pete 是正确的(或 Me.answers)。
    • frmMain是主要形式,answers是在frmMain下实例化的一个列表。你是对的,@dbansnett。
    • +1 用于使用增强的 for 循环。不知道如何在 VB 中做到这一点。
    • @ChrisShula 我相信他说的是从另一个表单访问 frmMain 属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    相关资源
    最近更新 更多