C#实用自定义函数:数组拼接、时间戳转换与安全随机数

Elena
Elena
发布时间:2026-10-15| 5人浏览过
原创

在C#程序开发中,许多基础但常用的功能若每次都手写显得冗余。本文精选了三个实用的自定义函数片段:包括高效的数组转字符串拼接逻辑、准确的DateTime转Unix时间戳算法,以及基于RNGCryptoServiceProvider的高安全性随机数生成器,直接提供可复用代码以提升开发效率。

结果或目标

通过引入这些封装好的函数,开发人员可以避免在项目各处重复编写基础工具代码,同时确保时间计算和随机数生成的准确性与安全性。

准备条件

  1. 开发环境:支持C#语法的IDE(如Visual Studio)。
  2. 命名空间:部分功能涉及 System.Security.Cryptography,需确保引用正确。

真实操作顺序

第1步:实现数组转字符串功能

目的:模拟PHP等语言中的 implode 功能,将字符串数组根据指定分隔符合并为一个长字符串。 入口:需要处理的数据数组及分隔符参数。

动作:

/// <summary>
/// 将数组转成字符串
/// </summary>
/// <param name="glue">分隔符</param>
/// <param name="pieces">要字符串数组</param>
private string Implode(char glue, string[] pieces)
{
    string result = string.Empty;
    int count = pieces.Length;
    for (int i = 0; i < count; i++)
    {
        if (i == 0)
        {
            result = pieces[i];
        }
        else
        {
            result = result + glue.ToString() + pieces[i];
        }
    }
    return result;
}

完成状态:调用该方法后,返回一个由分隔符连接的完整字符串。

第2步:实现DateTime转Unix时间戳

目的:将C#的 DateTime 对象转换为通用的Unix时间戳(自1970年1月1日以来的秒数),便于接口交互或存储。 入口:需要转换的时间对象。

动作:

/// <summary>
/// DateTime时间格式转换为Unix时间戳格式
/// </summary>
/// <param name="time"></param>
/// <returns></returns>
private int ConvertDateTimeInt(System.DateTime time)
{
    System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
    return (int)(time - startTime).TotalSeconds;
}

重要参数:TimeZone.CurrentTimeZone 确保使用的是当前系统的本地时区而非UTC。

完成状态:函数返回一个整数类型的秒级时间戳。

第3步:实现加密级随机数生成

目的:Random 类的种子默认基于时间,可预测性较高。使用 RNGCryptoServiceProvider 可以生成用于安全场景的不可预测随机数。 入口:无需外部输入,内部初始化种子。

动作:

首先,创建一个辅助方法获取加密级的随机种子:

/// <summary>
/// 加密随机数生成器,生成随机种子
/// </summary>
/// <returns></returns>
private static int Chaos_GetRandomSeed()
{
    byte[] bytes = new byte[4];
    System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider();
    rng.GetBytes(bytes);
    return BitConverter.ToInt32(bytes, 0);
}

接着,在需要生成范围随机数的地方使用该种子:

/// <summary>
/// 获得某个范围内的随机数
/// </summary>
/// <param name="start">随机数的下界</param>
/// <param name="end">随机数的上界</param>
/// <returns>[minValue, maxValue)范围内的随机整数</returns>
private int GetRandomInt(int minValue, int maxValue)
{
    Random r = new Random(Chaos_GetRandomSeed());
    return r.Next(minValue, maxValue);
}

完成状态:GetRandomInt 能够返回符合指定范围的伪随机整数,其底层种子具备更高的熵值。

简要总结

以上就是C#常用自定义函数(数组拼接、Unix时间戳转换与安全随机数)的详细内容,更多关于C#开发技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。