【发布时间】:2011-01-31 17:54:59
【问题描述】:
我需要在运行时为对象附加一个唯一标识符。该标识符在应用程序期间必须是唯一的。我计划在我的对象模型的基类中有一个私有成员变量来做到这一点。该变量将在对象初始化时设置,并且该值将在对象的生命周期内保持不变。在应用程序期间,没有其他对象可以具有相同的标识符。
当然,我可以使用System.Guid,但是每个对象需要 128 位的存储空间,我希望消耗更少的资源。我尝试使用 Int32 并使用 System.Environment.TickCount 属性对其进行初始化,但我没有获得足够的分辨率,并且某些对象最终分配了相同的值。
TickCounter 的文档说,TickCount 属性将在 ~29 后回滚到负数,然后再过 29 天回零。我很乐意用更高的分辨率换取更短的滚动时间。
我还有其他不知道的选择吗?
【问题讨论】:
-
你害怕使用 GUID 会过度消耗哪些资源?这句话听起来有点像过早的优化。我将从使用 GUID 的解决方案开始,并且只有在遇到具体的性能瓶颈时才重新考虑它。
-
我想太多了。谢谢大家让我走上正轨。
标签: c# performancecounter