c# - 根据 DateTime 左移计算优先级

标签 c# java .net algorithm

我有一个 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/

相关文章:

c# - 如何将 int 设置为 byte* C#

java - 在 Cucumber 步骤定义上传递多个参数

java - 如何确定 tty 号码

紧凑 .net 和常规 .net 之间的 C# 序列化/反序列化

c# - 二次方程式

c# - C# 中的任意精度小数

java - 同时迭代三个列表

c# - 对具有不同参数的相同方法调用的最小起订量期望

c# - SOAP header 中的 WCF 用户名和密码

c# - Visual Studio正在寻找没有publicKeyToken的旧Nuget包