如何检测此方案中是否删除了某个项目

时间:2013-05-29 15:40:01

标签: c# asp.net vb.net winforms c#-4.0

我有一个场景,在一个连续运行的线程“计时器”调用我的函数“custommethod”。我无法控制系统代码,这只是为了演示系统如何工作,我甚至不知道用 系统代码 编写了什么代码。

系统代码

   timer duration = 1000
    void timer_elapsed()
    {
          foreach(string symbol in symbols) //symbol list may vary
          {
               custommethod(symbol);
          } 
    }

结束系统代码

所以,我的方法“custommethod”只是定期从系统代码中获取一个参数。当用户添加或删除由系统代码处理的符号时,符号列表可能会有所不同。我得到的是周期性的活动符号。所以,我关心的是保留一个活动符号列表。

我的代码

function custommethod(string symbol)
{
      //Check whether new symbol is added or a symbol is deleted
}

结束我的代码

这是我到目前为止所尝试的

    HashTable ht=new HashTable();
    function custommethod(string symbol)
    {
          //Check whether new symbol is added or a symbol is deleted
            if(!ht.ContainsKey(symbol))
            {
                ht.Add(symbol,0);  //New symbol added
            }
          //How will i come to know whether a symbol is deleted or not
    }

2 个答案:

答案 0 :(得分:1)

如果htsymbols相同,那就不好了。永远不应该改变foreach循环的来源。

如果是这种情况,你应该制作一个新的集合,然后用旧的集合替换它。

答案 1 :(得分:1)

我不会做“for each”方法,而是使用HashSet在新集和旧集之间进行比较(虽然大多数是Linq,所以HashTable可以没问题,IDK)

HashSet oldSet;//construct that correctly
HashSet newSet;//construct that correctly also
HashSet deletedSet = oldSet.Except(newSet);
HashSet addedSet = newSet.Except(oldSet);