当前位置:网站首页>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日
边栏推荐
- Basic usage of MySQL in centos8
- C# 文件与文件夹操作
- 函数式接口和方法引用
- Skills of PLC recorder in quickly monitoring multiple PLC bits
- V2x SIM dataset (Shanghai Jiaotong University & New York University)
- What are the methods of adding elements to arrays in JS
- 在连接mysql数据库的时候一直报错
- [play with FPGA learning 2 in simple terms ----- design skills (basic grammar)]
- III Chip startup and clock system
- ctf 记录
猜你喜欢

三.芯片啟動和時鐘系統

II Stm32f407 chip GPIO programming, register operation, library function operation and bit segment operation

ImportError: cannot import name ‘Digraph‘ from ‘graphviz‘

webauthn——官方开发文档

VS2019代码中包含中文内容导致的编译错误和打印输出乱码问题

Verilog 和VHDL有符号数和无符号数相关运算

MySQL比较运算符IN问题求解

Jinshanyun - 2023 Summer Internship
![[play with FPGA learning 5 in simple terms ----- reset design]](/img/57/816a59787259dc32b52897c069e1a6.png)
[play with FPGA learning 5 in simple terms ----- reset design]

Openmldb meetup No.4 meeting minutes
随机推荐
Installation of ROS gazebo related packages
对毕业季即将踏入职场的年轻人的一点建议
念念不忘,必有回响 | 悬镜诚邀您参与OpenSCA用户有奖调研
TIPC Cluster5
On April 17, 2022, the five heart matchmaker team received double good news
数字化转型挂帅复产复工,线上线下全融合重建商业逻辑
制造业数字化转型和精益生产什么关系
MTK full dump grab
函数式接口和方法引用
[quick application] win7 system cannot run and debug projects using Huawei ide
【IDEA】使用插件一键逆向生成代码
[AGC] how to solve the problem that the local display of event analysis data is inconsistent with that in AGC panel?
微信小程序利用百度api达成植物识别
Webauthn - official development document
Iii. Système de démarrage et d'horloge à puce
通过券商经理的开户二维码开股票账户安全吗?还是去证券公司开户安全?
在连接mysql数据库的时候一直报错
TIPC introduction 1
Some things configured from ros1 to ros2
一.STM32的开发环境,keil5/MDK5.14安装教程(附下载链接)