com.alicizax.unity.framework/Runtime/ABase/Utility/Utility.IdGenerator.cs
2026-03-23 19:10:57 +08:00

45 lines
1.3 KiB
C#

using System;
using System.Threading;
namespace AlicizaX
{
public static partial class Utility
{
public static class IdGenerator
{
private static readonly DateTime s_UtcTimeStart = new DateTime(2024, 1, 1, 0, 0, 0, DateTimeKind.Utc);
// 共享计数器
private static long _counter = (long)(DateTime.UtcNow - s_UtcTimeStart).TotalSeconds;
private static int _intCounter = (int)(DateTime.UtcNow - s_UtcTimeStart).TotalSeconds;
/// <summary>
/// 使用Interlocked.Increment生成唯一ID的方法
/// </summary>
/// <returns></returns>
public static long GetNextUniqueId()
{
// 原子性地递增值
return Interlocked.Increment(ref _counter);
}
/// <summary>
/// 使用Interlocked.Increment生成唯一ID的方法
/// </summary>
/// <returns></returns>
public static int GetNextUniqueIntId()
{
return Interlocked.Increment(ref _intCounter);
}
/// <summary>
/// 生成新的 Guid 字符串。
/// </summary>
public static string GetGuid()
{
return Guid.NewGuid().ToString("N");
}
}
}
}