我有一个 Response 对象,每个 Response
对象都有 DateTime
属性,我们在该属性上存储其创建的日期时间。我将 Response 对象作为队列存储在 Dictionary
中,键是 Priority
(long),值是响应的 Queue
。
我正在做左位移来计算优先级。 this
指的是 Response
对象。
this.Priority = ((((long)this.Id) << 0x010) & 0FF0000) | (UInt32)(((this.TypeId << 0x08) & 0FF00));
this.Priority 将成为字典的键。
我将在此优先级计算中添加 DateTime
属性。对我来说,最旧的 DateTime
应该在字典中获得最高优先级。因此,与最新的 DateTime
相比,最旧的 DateTime
的计算结果应该更大。
任何帮助将不胜感激。
最佳答案
我还不能真正解决这个问题,但是......
我会计算 DateTime.MaxValue 和 DateTime.Now 之间的差异,然后获取 Ticks 并使用它来改变优先级。
TimeSpan timeToMajorFailure = DateTime.MaxValue - DateTime.Now; // The world will end
long ticks = timeToMajorFailure.Ticks; // on December 31, 9999
这样,对于较新的任务,刻度值会较低。请注意,我的减法没有考虑不同的时区。如果需要,可以使用 DateTimeOffset 类。
有趣的问题,我希望我的建议能有所帮助。
关于c# - 根据 DateTime 左移计算优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21452312/