向List添加新对象不起作用

htc*_*mrl 3 c#

我想添加一个新的OldFlatFile,以OldFlatFileList该作品,但没有增加新的一个.我看不到错误,我不知道下面的代码是否有问题?

OldFlatFileList count与添加之前和之后相同:

    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
        }
    });
Run Code Online (Sandbox Code Playgroud)
    private IEnumerable<OldFlatFile> OldFlatFileList
    {
        get { return Session[SystemConstant.OldFlatFileListKey] as List<OldFlatFile>; }
        set { Session[SystemConstant.OldFlatFileListKey] = value; }
    }
Run Code Online (Sandbox Code Playgroud)
    public class OldFlatFile : List<OldFlatFileEntry>
    {}
Run Code Online (Sandbox Code Playgroud)

Ser*_*kiy 13

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

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

 OldFlatFileList.Add(new OldFlatFile { ... });
Run Code Online (Sandbox Code Playgroud)

这将修改您的原始列表.