首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >元素列表不遵循我的递归方法c#

元素列表不遵循我的递归方法c#
EN

Stack Overflow用户
提问于 2014-11-11 15:29:40
回答 2查看 110关注 0票数 1

我有一个调用自身的方法(递归)。它收集了一些我需要分析的数据。它在DTO中收集数据。DTO设置:

代码语言:javascript
复制
    public class SequenceDTO
    {
        public string sequence { get; set; }
        public List<Element> stateList { get; set; }

        public SequenceDTO()
        { }

        public SequenceDTO(string sequence, List<Element> stateList)
        {
            this.sequence = sequence;
            this.stateList = stateList;
        }
    }

我就是这样初始化递归方法的:

代码语言:javascript
复制
string seq = "";
List<Element> elmList = new List<Element>();
initialSeqDTO.sequence = seq;
initialSeqDTO.stateList = elmList;
analyze(element, initialSeqDTO); //The recursion method

递归方法:

代码语言:javascript
复制
public void handleEventAnalysis3(Element elm, SequenceDTO dto)
{
    SequenceDTO newSeqDTO = new SequenceDTO();
    List<Element> elmList = new List<Element>();
    elmList = dto.stateList;
    newSeqDTO.sequence = dto.sequence;
    newSeqDTO.stateList = elmList;

    newSeqDTO.stateList.Add(clientElement);

    if (!clientElement.Name.Equals("Initial"))
         handleEventAnalysis3(clientElement, newSeqDTO);

    if (clientElement.Name.Equals("Initial"))
    {
        sequenceList.Add(newSeqDTO);
    }
}

这将SequenceDTO添加到sequenceList中。但是dto.stateList对于每个SequenceDTO都是一样的。这怎么可能呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-11 15:34:23

创建一个新的List<Element>

代码语言:javascript
复制
List<Element> elmList = new List<Element>();

但是,您可以使用对旧列表的引用覆盖它:

代码语言:javascript
复制
elmList = dto.stateList;

相反,只需调用ToList()生成一个新列表:

代码语言:javascript
复制
newSeqDTO.stateList = dto.stateList.ToList();
票数 2
EN

Stack Overflow用户

发布于 2014-11-11 15:32:05

因为您将相同的列表分配给每个DTO:

代码语言:javascript
复制
 elmList = dto.stateList; // this reassigns the variable which makes you lose the newly created list
 newSeqDTO.sequence = dto.sequence;
 newSeqDTO.stateList = elmList

如果您只需删除这一行,它就能工作:

代码语言:javascript
复制
elmList = dto.stateList;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26868396

复制
相关文章

相似问题

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