【问题标题】:Using Timespan as key in dictionary?使用时间跨度作为字典中的键?
【发布时间】:2012-11-20 05:26:35
【问题描述】:

我有以下代码。它没有向字典中添加新的键值....有什么问题??

while(true)
{
TimeSpan t = // some timespan which is updating every second
int value =  // some value associated with timespan

Dictionary<TimeSpan,int> _dict = new Dictionary<TimeSpan,int>();
_dict.Add(t,value);
}

【问题讨论】:

  • 有什么问题?重复键?无限循环 (while(true))?
  • 循环不是问题...每次我添加一些数据时,键都会被覆盖。
  • 也许给我们一些不起作用的例子
  • 我无法将任何新的 TimeSpan 作为键添加到字典中。我可以使用 TimeSpan 作为键吗?

标签: c# dictionary key-value


【解决方案1】:

问题是每次循环执行时你都在实例化一个全新的字典

试试这个:

Dictionary<TimeSpan,int> _dict = new Dictionary<TimeSpan,int>();
while(true)
{
       TimeSpan t = // some timespan which is updating every second
       int value =  // some value associated with timespan
       _dict.Add(t,value);
}

作为旁注,仅使用总经过的滴答声或毫秒作为键而不是时间跨度对象可能更有意义

【讨论】:

  • 非常感谢@pickles ......我太傻了......如果我添加重复的键会发生什么??
  • 如果你使用 Add 你会得到一个异常。如果你使用 _dict[t] = value 它将替换现有的键/值对
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-22
  • 1970-01-01
  • 1970-01-01
  • 2011-10-11
  • 2016-06-27
  • 1970-01-01
  • 2013-07-25
相关资源
最近更新 更多