首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >锁定列表(类)

锁定列表(类)
EN

Stack Overflow用户
提问于 2014-05-28 22:26:38
回答 1查看 35关注 0票数 0

我写了一个程序,从成百上千的csv文件中提取数据,然后将这些数据发布到一个名为ENTRY_ENTRYList (of Class)中。

在将数据放入其中之后,我需要将数据重新组织到一个层次结构中,指示级别等。我首先确定哪些ENTRY_行是层次结构的顶层。

此信息存储在名为LIST_LIST的列表中。

为此,我迭代了LIST_LIST列表,然后在原始列表ENTRY_ENTRY中挑选出匹配的信息,将值复制到一个新的类实例Entry_F中,操作数据,然后将信息添加到一个名为ENTRY_FINAL的新List (of Class)中。我还跟踪了最后运行的ENTRY_行,然后返回到它。

所有这些编码都运行得很好。

Class中的一个字段跟踪每行在层次结构中的级别。

我编写了代码,这样就不会对ENTRY_ENTRY列表进行修改,但是会有一些东西写回ENTRY_ENTRY

有没有一种方法可以在设置ENTRY_ENTRY列表后将其锁定?

下面是部分代码。

代码语言:javascript
运行
复制
 Public Sub levels()

        For Each List_ As LIST_ARRAY In LIST_LIST
        If List_.List_TopLevel = True Then ' finds top level parts sheets
            'MsgBox(List_.List_FileName & " : Top level : " & List_.List_Ref)

            templevel1 = List_.List_Ref
            For Each ENTRY_ As ENTRY_ARRAY In ENTRY_ENTRY
                If ENTRY_.Entry_List_Ref = templevel1 Then ' Checks for same List Ref

                    entry_F = ENTRY_
                    ' entry_f.Entry_Level = ENTRY_.Entry_Level 'increases level 



                    Entry_Final.Add(entry_F) 'adds line to final array

                    If entry_f.Entry_LinkRef <> "" Then
                        entry_1 = ENTRY_

                        sublevel2()

                    End If



                End If

            Next
        End If
    Next
End Sub

Sub sublevel2()
    'MsgBox("Sublevel2 start " & entry_f.Entry_LIST_FileName & " : " & entry_f.Entry_LinkRef & " : " & entry_f.Entry_Level)
    'For Each ENTRY_f As ENTRY_ARRAY In Entry_Final.ToArray
    If entry_f.Entry_LinkRef <> "" Then
        templevel2 = entry_f.Entry_LinkRef
        'MsgBox("templevel assigned")
        For Each ENTRY_ As ENTRY_ARRAY In ENTRY_ENTRY.ToArray
            If ENTRY_.Entry_List_Ref = templevel2 Then
                'MsgBox("found child")


                entry_f = ENTRY_
                entry_f.Entry_Level = entry_f.Entry_Level + entry_1.Entry_Level 'increases level 

                Entry_Final.Add(entry_f) 'adds line to final array
                ' MsgBox("added line")

                If entry_f.Entry_LinkRef <> "" Then

                    entry_2 = ENTRY_
                    sublevel3()

                End If

            End If
            'MsgBox("Finished " & ENTRY_.Entry_PartNo & " : " & ENTRY_.Entry_LIST_FileName & " : " & templevel2)
        Next

        ENTRY_ = entry_1


    End If
    MsgBox("next child")



End Sub

Sublevel3()Sublevel2()的低级版本

我在哪里将更新后的信息写回ENTRY_ENTRY列表?

EN

回答 1

Stack Overflow用户

发布于 2014-05-28 22:37:44

好吧,你的代码/你的问题很难理解,但我猜问题是这样的:

...pick输出原始列表ENTRY_ENTRY中的匹配信息,将值复制到新的类实例Entry_F中,操作数据,然后将信息添加到名为ENTRY_FINAL的新List (of Class)中。

看起来你是在谈论代码的这一部分:

代码语言:javascript
运行
复制
For Each ENTRY_ As ENTRY_ARRAY In ENTRY_ENTRY.ToArray
    If ENTRY_.Entry_List_Ref = templevel2 Then
        entry_f = ENTRY_
        entry_f.Entry_Level = entry_f.Entry_Level + entry_1.Entry_Level 'increases level 
        Entry_Final.Add(entry_f)
        ...

请注意,您不是在这里创建类的新实例:

代码语言:javascript
运行
复制
entry_f = ENTRY_

如果您更改了entry_f,就像下面这样:

代码语言:javascript
运行
复制
entry_f.Entry_Level = entry_f.Entry_Level + entry_1.Entry_Level 'increases level 

您更改的实例与列表ENTRY_ENTRY中的实例相同,因为entry_fENTRY_是对同一对象的引用。

您必须创建一个新对象,并将其添加到Entry_Final中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23914396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档