当前位置:网站首页>C#基于当前时间,获取唯一识别号(ID)的方法
C#基于当前时间,获取唯一识别号(ID)的方法
2022-07-02 09:38:00 【chengjl8】
在软件开发里,我们常常要区别各个类似的对象,比如批量生成的多个变量,多个标注等等。在PLC-Recorder开发的过程中,ID号的生成方法也经过了多次优化,才终于稳定下来,能够基于当前时间,生成不重复的ID号(突发需要量不是很大时有效),分享给大家,让朋友们也少走些弯路。
1、基于当前时间
由于软件可能会重启,因此,将历史的ID都记录下来,将是个非常大的负担。因此,基于当前时间进行ID生成,能避免与历史上ID的冲突。
Int64 ID = DateTime.Now.Ticks;
2、发现ID号的重复
仅用上述语句生成ID号是不够的,因为,批量生成时,他们是相同的,因此,需要查重。
将有效的ID存入字典,可以快速查重。程序自己生成ID后,会立即存入字典。如果是其他程序生成的,要注意也存入字典。
当然,用嘻哈表可能更简单,大家可以改进,我这边生成ID的动作不频繁,所以,无所谓。
3、发现重复时的处理
如果发现重复了,则将ID++,直到找到不重复的。然后将新的ID存入字典,并反馈出去。
/// <summary>
/// 采用字典方式
/// </summary>
/// <returns>新ID</returns>
public static Int64 IDGetNew()
{
//确认ID不重复
Int64 ID = DateTime.Now.Ticks;
while (LibID.ContainsKey(ID))
{
ID++;//获得一个新的ID
}
LibID.Add(ID, ID);
return ID;
}
public static void IDAdd(long ID)
{
if (LibID.ContainsKey(ID)) return;
LibID.Add(ID, ID);
}
private static Dictionary<long, long> LibID = new Dictionary<long, long>();
2022年6月30日
边栏推荐
- Iii. Système de démarrage et d'horloge à puce
- Functional interfaces and method references
- Win11 arm system configuration Net core environment variable
- III Chip startup and clock system
- TIPC Cluster5
- The difference between SQL left join main table restrictions written after on and where
- Importerror: impossible d'importer le nom « graph» de « graphviz»
- On April 17, 2022, the five heart matchmaker team received double good news
- ros缺少catkin_pkg
- Order by注入
猜你喜欢
ImportError: cannot import name ‘Digraph‘ from ‘graphviz‘
Tick Data and Resampling
Importerror: impossible d'importer le nom « graph» de « graphviz»
C#多维数组的属性获取方法及操作注意
TIPC addressing 2
Webauthn - official development document
【云原生】2.5 Kubernetes 核心实战(下)
Verilog and VHDL signed and unsigned number correlation operations
Use Huawei performance management service to configure the sampling rate on demand
Flick two open, realized a batch lookup join (with source code)
随机推荐
念念不忘,必有回响 | 悬镜诚邀您参与OpenSCA用户有奖调研
liftOver进行基因组坐标转换
Is bond fund safe? Does the bond buying foundation lose principal?
ctf 记录
数字化转型挂帅复产复工,线上线下全融合重建商业逻辑
TIPC Getting Started6
Order by注入
在连接mysql数据库的时候一直报错
[quick application] win7 system cannot run and debug projects using Huawei ide
Redis超出最大内存错误OOM command not allowed when used memory &gt; 'maxmemory'
mmrotate旋转目标检测框架使用记录
enumrate的start属性的坑
抖音海外版TikTok:正与拜登政府敲定最终数据安全协议
sql left join 主表限制条件写在on后面和写在where后面的区别
PKG package manager usage instance in FreeBSD
亚马逊云科技 Community Builder 申请窗口开启
TIPC addressing 2
What are the software product management systems? Inventory of 12 best product management tools
Xiao Sha's pain (double pointer
MySQL basic statement