List <>。Append对公共字段,静态字段和初始化字段无效

时间:2019-03-23 20:12:27

标签: c#

我编写了一些代码,以便向我的public static List<Tuple<TasksTypes, string>>() TasksToDo添加对象,但是当我尝试Append()时,列表什么都没有发生-尽管在debuagger中该方法被调用,但它保持不变没有例外。这是我的相关代码:

    public class GetRefreshInfo : IDisposable
    {
        public enum TasksTypes
        {
            GetOneTable,
            GetAllBySpecial,
        }
        private static List<Tuple<TasksTypes, string>> TasksToDo = null;
        public double RefreshFreq { get; set; } = 300;
        public GetRefreshInfo(double RefreshFreqPar = 300)
        {
            //<summary>Object Constructor</summary>
            RefreshFreq = RefreshFreqPar;
            _Results = new Dictionary<Tuple<TasksTypes, string>, object>();
            TasksToDo = new List<Tuple<TasksTypes, string>>();
        }
        public void AddTask(TasksTypes type, string Insructions)
        {
            //<summary>Adds task to thread execution</summary>
            TasksToDo.Append<Tuple<TasksTypes, string>>(new Tuple<TasksTypes, string>(type, Insructions));
        }
    }

代码执行得很好,没有异常,但没有任何追加, 谢谢。

1 个答案:

答案 0 :(得分:7)

List<T>不包含Append方法。您正在使用Enumerable<T>.Append,因此该行实际上根本不执行任何操作。

您将不得不存储操作的结果(这意味着每次调用该方法时都要枚举并重新创建整个列表):

TasksToDo = TasksToDo
    .Append<Tuple<TasksTypes, string>>(new Tuple<TasksTypes, string>(type, Insructions))
    .ToList();

或者更好的是,使用List<T>.Add

TasksToDo.Add(new Tuple<TasksTypes, string>(type, Insructions));