向List添加新对象不起作用

时间:2013-12-31 14:01:40

标签: c#

我正在尝试将新的OldFlatFile添加到OldFlatFileList,但不能添加新的OldFlatFileList。我看不到错误,我不知道下面的代码是否有问题?

var selectedPackage = FlatFileHelper.GetSelectedPackage(OldFlatFileList); var primaryFeature = new PrimaryFeatures(){ DataTypeCode = "abc" }; OldFlatFileList.ToList().Add( new OldFlatFile { new OldFlatFileEntry { InformationFields = selectedPackage.InformationFields, PrimaryFeatures = primaryFeature, SecondaryFeatures = null } }); 计数与添加前后相同:

    private IEnumerable<OldFlatFile> OldFlatFileList
    {
        get { return Session[SystemConstant.OldFlatFileListKey] as List<OldFlatFile>; }
        set { Session[SystemConstant.OldFlatFileListKey] = value; }
    }

    public class OldFlatFile : List<OldFlatFileEntry>
    {}

{{1}}

1 个答案:

答案 0 :(得分:13)

OldFlatFileList.ToList()创建新的列表实例(将包含原始列表中的项目副本)。然后,您将新对象添加到该新列表,但不保存对任何变量中的新列表的引用。所以添加项目的新列表将由垃圾收集器收集。原始列表将保持不变(因为您没有添加项目)。

因此,您无法将项添加到IEnumerable<T>类型的变量(它仅支持枚举),我建议您将OldFlatFileList属性类型更改为List<OldFlatFile>或{{1} }或IList<OldFlatFile>。然后简单地致电:

ICollection<OldFlatFile>

这将修改您的原始列表。