C# : 全局唯一标识符
C# : 全局唯一标识符
# 在C#中获取唯一码的方法
在C#中有多种方式可以生成唯一标识符或唯一码,以下是几种常见的方法:
## 1. 使用GUID (全局唯一标识符)
```csharp
// 生成一个新的GUID
Guid uniqueId = Guid.NewGuid();
string uniqueCode = uniqueId.ToString();
// 可以移除连字符使其更紧凑
string compactUniqueCode = uniqueId.ToString("N");
// 示例输出: "6a5f8b3d-2c1e-4f7a-9b0c-8d3e6f2a1b5c" 或 "6a5f8b3d2c1e4f7a9b0c8d3e6f2a1b5c"
```
## 2. 使用时间戳 + 随机数
```csharp
// 基于时间戳和随机数的唯一码
string timestamp = DateTime.Now.ToString("yyyyMMddHHmmssfff");
Random random = new Random();
int randomNum = random.Next(1000, 9999);
string uniqueCode = $"{timestamp}_{randomNum}";
// 示例输出: "20230425143045987_3847"
```
## 3. 使用进程/机器特定信息
```csharp
// 结合机器名、进程ID和时间戳
string machineName = Environment.MachineName;
int processId = System.Diagnostics.Process.GetCurrentProcess().Id;
string timestamp = DateTime.Now.Ticks.ToString();
string uniqueCode = $"{machineName}_{processId}_{timestamp}";
// 示例输出: "MYPC_1234_638170045678912345"
```
## 4. 使用递增计数器 (适用于单机应用)
```csharp
// 使用静态变量作为计数器
private static long _counter = 0;
public static string GetUniqueCode()
{
long count = Interlocked.Increment(ref _counter);
return $"{DateTime.Now:yyyyMMdd}_{count}";
}
// 示例输出: "20230425_1", "20230425_2" 等
```
## 5. 使用Hash算法生成唯一码
```csharp
// 基于某些输入数据生成哈希唯一码
string inputData = "your_data_here";
using (System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create())
{
byte[] hashBytes = md5.ComputeHash(Encoding.UTF8.GetBytes(inputData));
string uniqueCode = BitConverter.ToString(hashBytes).Replace("-", "");
}
// 示例输出: "5D41402ABC4B2A76B9719D911017C592"
```
## 选择建议
- 如果需要全局唯一标识符,推荐使用 **GUID**
- 如果需要可读性较好的唯一码,可以使用 **时间戳+随机数** 组合
- 如果需要在分布式系统中生成有序唯一ID,可以考虑 **Snowflake算法** 或其他分布式ID生成方案
根据你的具体需求选择合适的唯一码生成方式。
郭少锋
创建 2025-04-11 11:27:57
C#
windows : Office 2024 专业增强版永久激活方法
windows : Office 2024 专业增强版永久激活方法
以管理员身份打开PowerShell,输入:
powershellCopy Code
irm https://massgrave.dev/get | iex
按提示选择“2”(激活Office)→“1”(永久激活),等待提示“Office is permanently activated”
郭少锋
编辑 2025-04-08 08:34:36
创建 2025-04-08 08:34:03
windows
云星空 : 条件设置:物料未启用BOM编码
云星空 : 条件设置:物料未启用BOM编码
FMaterialid == null OR len(filter(lambda x:x.IsEnable == true and x.InvPtyId_Id == 10003, FMaterialID.MaterialInvPty))<=0
物料编码==null OR len(filter(lambda x:x.IsEnable==true and x.InvPtyId_Id==10003, 物料编码.MaterialInvPty))<=0
郭少锋
创建 2025-03-25 20:18:58
云星空
windows : win11 连接蓝牙耳机后,只有输入,输出设备选不到耳机
windows : win11 连接蓝牙耳机后,只有输入,输出设备选不到耳机
### 6. 重启音频服务
- 按 **Win + R**,输入 `services.msc`,找到 **Windows Audio** 服务。
- 右键点击,选择 **重新启动**。
再去选择输出设备
------------------------------------------------------------------------------------------------------------------------------------------------------------
在 Windows 11 中,如果蓝牙耳机只能选择为输入设备(麦克风)而无法选择为输出设备(音频播放),可能是以下原因导致的。你可以尝试以下步骤来解决问题:
### 1. 检查蓝牙耳机的音频输出功能
确保你的蓝牙耳机支持音频输出功能。有些耳机可能只支持麦克风输入,而不支持音频输出。
### 2. 确保耳机已正确连接
- 打开 **设置** > **蓝牙和设备**,确认耳机已成功连接。
- 如果耳机未连接,尝试重新配对。
### 3. 设置为默认输出设备
- 右键点击任务栏右下角的 **音量图标**,选择 **声音设置**。
- 在 **输出设备** 下拉菜单中,选择你的蓝牙耳机。
- 如果没有看到耳机选项,点击 **管理声音设备**,在 **输出设备** 列表中查找并启用耳机。
### 4. 更新蓝牙驱动程序
- 右键点击 **开始菜单**,选择 **设备管理器**。
- 找到 **蓝牙** 部分,右键点击蓝牙适配器,选择 **更新驱动程序**。
- 选择 **自动搜索驱动程序**,或从制造商官网下载最新驱动。
### 5. 检查耳机的音频配置文件
- 在 **设备管理器** 中,找到已连接的蓝牙耳机,右键选择 **属性**。
- 在 **服务** 选项卡中,确保 **音频接收器** 或 **免提电话** 等选项已勾选。
### 6. 重启音频服务
- 按 **Win + R**,输入 `services.msc`,找到 **Windows Audio** 服务。
- 右键点击,选择 **重新启动**。
### 7. 重置蓝牙设置
- 打开 **设置** > **蓝牙和设备**,移除已配对的耳机。
- 重新配对耳机。
### 8. 检查耳机固件
- 查看耳机是否有固件更新,通过制造商提供的工具进行更新。
### 9. 系统更新
- 确保 Windows 11 已更新到最新版本,打开 **设置** > **Windows 更新**,检查并安装更新。
### 10. 尝试其他设备
- 将耳机连接到其他设备,确认是否正常工作。
如果以上方法无效,可能是硬件或系统兼容性问题,建议联系耳机制造商或微软支持。
郭少锋
创建 2025-03-23 09:56:14
windows
云星空 : 基础资料属性 整数 变成了 1位小数
云星空 : 基础资料属性 整数 变成了 1位小数
基础资料 整数字段,在引用时,基础资料属性 会显示成 0.0,设置【显示格式字符串 0】,可以解决问题
郭少锋
创建 2025-03-10 16:19:23
云星空
C# : 保留2位小数 加%号
C# : 保留2位小数 加%号
decimal aFQty = Convert.ToDecimal(aTable2[aRow]["F_RVFJ_HZSHSL"]); // F_RVFJ_HZSHSL 汇总实耗数量
decimal aFQtyReq = Convert.ToDecimal(aTable2[aRow]["F_RVFJ_HZYHSL"]); // F_RVFJ_HZYHSL 汇总申请数量
var aFRate = ( aFQtyReq == 0 || aFQty == aFQtyReq ? "" :((aFQty - aFQtyReq) / aFQtyReq * 100).ToString("P2") ); // 效果 -163.20% 4,225.94%
this.Model.SetValue("F_ScrapRate", aFRate, aRow);
如果需要百分比格式化,使用方法 1(ToString("P2"))。
如果只需要保留两位小数并添加百分号,使用方法 2($"{number:F2}%")。
如果需要先四舍五入再格式化,使用方法 3(Math.Round)。
如果需要更灵活的控制,使用方法 4(string.Format)。
double number = 50.12345; // 示例数字
string result = (number / 100).ToString("P2"); // 格式化为百分比并保留两位小数
Console.WriteLine(result); // 输出: 50.12%
double number = 50.12345; // 示例数字
string result = $"{number:F2}%"; // 保留两位小数并添加百分号
Console.WriteLine(result); // 输出: 50.12%
double number = 50.12345; // 示例数字
double roundedNumber = Math.Round(number, 2); // 保留两位小数
string result = $"{roundedNumber}%"; // 添加百分号
Console.WriteLine(result); // 输出: 50.12%
double number = 50.12345; // 示例数字
string result = string.Format("{0:N2}%", number); // 保留两位小数并添加百分号
Console.WriteLine(result); // 输出: 50.12%
郭少锋
编辑 2025-03-06 10:16:32
创建 2025-03-06 10:14:51
C#
C# : switch 判断语句
C# : switch 判断语句
SourceBillType sourceBillType;
switch (selectedRows[0].FormID.ToUpperInvariant())
{
case "PRD_MORPT":
sourceBillType = SourceBillType.ReportBill;
text = "PRD_MORPTENTRY";
break;
case "PRD_INSTOCK":
sourceBillType = SourceBillType.InStockBill;
text = "Entity";
break;
case "SFC_OPERATIONREPORT":
sourceBillType = SourceBillType.OperationReport;
text = "OptRptEntry";
break;
case "SFC_OPERATIONTRANSFER":
sourceBillType = SourceBillType.OperationTransfer;
text = "SFC_OperationTransfer";
break;
default:
sourceBillType = SourceBillType.ReportBill;
break;
}
郭少锋
创建 2025-03-04 14:14:12
C#
云星空 : 生产用料清单:基本单位应发数量 别名【原始携带量】
云星空 : 生产用料清单:基本单位应发数量 别名【原始携带量】
标识:FBaseMustQty
名称:原始携带量
字段名:基本单位应发数量
郭少锋
编辑 2025-03-03 16:33:37
创建 2025-03-03 16:31:30
云星空
C# : ShowMessage 显示警告
C# : ShowMessage 显示警告
this.View.ShowNotificationMessage(aMsg); 会被 系统默认的 提示 取代
this.View.ShowMessage(aMsg ,MessageBoxType.Advise); 用这种方式 就能正常显示
郭少锋
创建 2025-02-28 15:10:11
C#
K3 功能 : 该单已经被其他单据关联
K3 功能 : 该单已经被其他单据关联
select * from SEOrder where FBillNo = 'SEORD2024042887360' -- FInterID = 89742
select * from SEOrderEntry where FInterID = 89742
/*
【取消关联】单据反审核未成功!该单已经被其他单据关联。
update SEOrder set FChildren = 0 where FBillNo = 'SEORD2024042887360'
update SEOrderEntry set FCommitQty = 0 ,FAuxCommitQty = 0 where FInterID = 89742
*/
郭少锋
编辑 2025-02-28 14:29:20
创建 2025-02-28 14:03:15
K3 功能