当前位置: 首页 > news >正文

8.C# —— 随机数、DateTime时间、字符串

一、C# 随机数伪随机 安全随机1. 核心概念计算机中没有真正的随机数生成的都是伪随机数通过算法 种子计算得出。种子相同 → 生成的随机数序列完全相同不指定种子 → 默认使用系统当前时间作为种子随机性更好2. 常用随机数生成方式1Random 类基础随机数推荐日常使用// 1. 指定种子种子相同随机数相同 Random r1 new Random(10); Console.WriteLine(r1.Next()); // 2. 不指定种子默认时间为种子推荐 Random r2 new Random(); // 生成指定范围随机数 [min, max) 包含最小值不包含最大值 Console.WriteLine(r2.Next(10, 21)); // 10~20 Console.WriteLine(r2.Next(21)); // 0~20 // 3. 循环生成多个随机数重点Random 不要写在循环内 Random r3 new Random(); for (int i 0; i 4; i) { Console.WriteLine(r3.Next()); // 正确用法 }2随机生成字母 / 字符串// 方式1从指定字符串中随机取字符 string str qwertyuiopasdfghjklzxcvbnm; Random r4 new Random(); // 生成4位随机字母 string res ; for (int i 0; i 4; i) { res str[r4.Next(str.Length)]; } Console.WriteLine(res); // 方式2通过 ASCII 码生成 a-z(97~122) string res2 ; for (int i 0; i 4; i) { res2 (char)r4.Next(97, 123); } Console.WriteLine(res2);3高级随机数了解GUID全球唯一标识符几乎不会重复适合生成订单号、唯一 IDConsole.WriteLine(Guid.NewGuid());RNGCryptoServiceProvider加密级安全随机数适合密码、密钥场景RNGCryptoServiceProvider rng new RNGCryptoServiceProvider(); byte[] bs new byte[10]; rng.GetBytes(bs); Console.WriteLine(BitConverter.ToString(bs));3. 避坑指南循环生成随机数时不要在循环内 new Random ()会因为执行时间过短导致种子相同随机数重复。二、DateTime 日期时间操作1. 核心作用DateTime是结构体用于存储、获取、格式化系统日期和时间。2. 获取当前时间 拆分年月日时分秒// 获取当前系统时间 DateTime now DateTime.Now; Console.WriteLine(now); // 拆分时间分量 Console.WriteLine(now.Year); // 年 Console.WriteLine(now.Month); // 月 Console.WriteLine(now.Day); // 日 Console.WriteLine(now.Hour); // 小时(24制) Console.WriteLine(now.Minute); // 分钟 Console.WriteLine(now.Second); // 秒 Console.WriteLine(now.Millisecond); // 毫秒 Console.WriteLine(now.DayOfWeek); // 星期英文 Console.WriteLine((int)now.DayOfWeek); // 星期数字周日0 Console.WriteLine(now.DayOfYear); // 当年第几天3. 时间格式化字符串重点通过ToString(格式符)自定义时间显示格式格式符含义示例yyyy4 位年份2026MM2 位月份05dd2 位日期21HH24 小时制14hh12 小时制02mm分钟30ss秒59fff毫秒123DateTime now DateTime.Now; Console.WriteLine(now.ToString(yyyy-MM-dd HH:mm:ss)); Console.WriteLine(now.ToString(今年是yyyy年MM月dd日 HH:mm:ss));4. 时间戳秒 / 毫秒时间戳当前时间距离1970-01-01 00:00:00的秒数 / 毫秒数常用于跨平台时间传输。DateTime now DateTime.Now; DateTimeOffset offset new DateTimeOffset(now); // 1. 时间 → 时间戳 long second offset.ToUnixTimeSeconds(); // 秒 long millisecond offset.ToUnixTimeMilliseconds(); // 毫秒 // 2. 时间戳 → 时间 DateTime time DateTimeOffset.FromUnixTimeSeconds(1779347102).LocalDateTime; Console.WriteLine(time);三、时间对象的计算和比较1. 时间加减计算DateTime提供专用方法计算时间不会修改原时间返回新时间DateTime now DateTime.Now; // 加法 now now.AddYears(1); // 加1年 now now.AddMonths(2); // 加2月 now now.AddDays(3); // 加3天 now now.AddHours(1); // 加1小时 // 减法传入负数 now now.AddYears(-1); // 减1年2. 时间比较DateTime支持直接用 比较运算符重载if (DateTime.Now new DateTime(2027, 5, 24)) { Console.WriteLine(已过指定日期); } else { Console.WriteLine(未到指定日期); }3. 时间间隔TimeSpan两个时间相减得到TimeSpan时间差对象DateTime end new DateTime(2026, 5, 21, 16, 0, 0); TimeSpan span end - DateTime.Now; // 获取时间差分量 Console.WriteLine(span.Days); // 天数 Console.WriteLine(span.Hours); // 小时 Console.WriteLine(span.Minutes); // 分钟 Console.WriteLine(span.Seconds); // 秒四、string 字符串常用方法高频使用1. 字符串定义方式// 1. 普通定义 string s1 Hello C#; // 2. 换行转义 \r\n string s2 第一行\r\n第二行; // 3. 原样字符串保留格式无需转义 string path C:\Users\Desktop; // 4. new 方式重复字符 string s3 new string(c, 4); // cccc2. 字符串常用操作方法方法作用示例string.Concat(a,b)拼接多个字符串string.Concat(张,三)→张三string.Join(分隔符, 数组)用分隔符连接字符串string.Join(-,a,b)→a-bToLower()转小写ABC.ToLower()→abcToUpper()转大写abc.ToUpper()→ABCStartsWith(值)判断是否以指定字符开头返回 boolEndsWith(值)判断是否以指定字符结尾返回 boolIndexOf(值)查找字符索引不存在返回 - 1abc.IndexOf(b)→1Substring(起始,长度)截取字符串abcde.Substring(1,2)→bcReplace(旧,新)替换字符abc.Replace(a,*)→*bcSplit(分隔符)分割字符串为数组a-b-c.Split(-)→[a,b,c]Trim()去除首尾空格 张三 .Trim()→张三TrimEnd()去除尾部空格-3. 完整示例string str 尉氏县自来水污染上央视新闻 ; // 去除空格 str str.Trim(); // 判断开头 Console.WriteLine(str.StartsWith(尉)); // 查找索引 Console.WriteLine(str.IndexOf(县)); // 截取字符串 Console.WriteLine(str.Substring(3, 4)); // 替换 Console.WriteLine(str.Replace(污染, **)); // 分割 string arr a-b-c-d.Split(-);总结随机数日常用Random不写在循环内唯一 ID 用GUID安全场景用加密随机数DateTime核心掌握获取时间、格式化、时间戳转换时间计算用AddXXX方法加减用TimeSpan计算时间差字符串Substring、Replace、Split、Trim、IndexOf是工作中最常用的方法。
http://www.gsyq.cn/news/1341405.html

相关文章:

  • 成都移动冷库技术深度解析:成都冷藏库/成都冷链冻库/成都冻库厂家/成都冻库工程/成都医药冷库/成都医药冻库/成都果蔬冻库/选择指南 - 优质品牌商家
  • 新旧版鸿蒙系统的区别详解——升级前必读指南
  • 鸿蒙系统给抖音开启相机权限的操作指南(2026)
  • 鸿蒙系统下抖音存储空间不足怎么办?缓存清理教程
  • 2025-2026年北京装修设计公司推荐:十大排行产品专业评测别墅定制防踩坑性价比高 - 品牌推荐
  • 长期使用中观察Taotoken账单的透明度与预测准确性
  • py每日spider案例之netease搜索接口获取
  • pubnub代码示例
  • 2026年至今,龙游专业鲜花服务选择指南与知音花艺生活馆深度推荐 - 2026年企业推荐榜
  • Midjourney金属渲染避坑清单(2024Q2最新):6类典型翻车案例+对应反向Prompt修复模板
  • 【仅剩最后47套】ElevenLabs丹麦语定制声音训练包(含哥本哈根/奥胡斯/奥尔堡三地方言样本库+声学特征标注集):20年语音工程团队内部封存资料限时开放
  • AI与云计算融合的考点中,机器学习基础流程、大模型应用基础及Prompt Engineering在系统设计中的作用是三大核心模块
  • 2026 年中国 GEO服务商/公司实力排名白皮书:技术、合规、效果、方案、续费率、口碑、好评榜、选型逻辑、全维度解析 - 互联网科技品牌测评
  • 知识竞赛裁判怎么当?评分标准与争议处理
  • 扣子平台全攻略:从零开发具有视频对话能力的心理陪伴机器人(附完整代码与详细解释)
  • 在NVIDIA DGX-Spark上部署NeMo框架实现微调与TensorRT Bit量化的全流程指南
  • 2026年四川城市管道清淤检测服务机构实测评测:四川城市管道清淤检测、四川工业污水转运、四川市政管道清淤检测、四川排水管道清淤检测选择指南 - 优质品牌商家
  • 2026年温州整体装修品牌实力对比:5家头部企业服务深度评测与选企建议 - 优家闲谈
  • 新乡施工选仿石漆:在平顶山施工选仿石漆选谁、在开封施工选仿石漆选谁、在新乡施工选仿石漆选谁、在洛阳施工选仿石漆选谁选择指南 - 优质品牌商家
  • TVA:打通数字AI到物理AI的关键桥梁(系列)
  • 网络协议基础与TCP/IP详解
  • 3步让PS手柄在Windows上完美运行:DS4Windows终极配置指南
  • ZeroOmega:3分钟掌握浏览器代理切换的终极免费工具
  • 鸿蒙生鲜电商页面构建:商品网格与配送档期模块详解
  • 2025-2026年上海靠谱搬家公司推荐:五大排行全程托管省心搬家评测性价比高适用场景 - 品牌推荐
  • TriPlayer:重新定义Switch后台音频的智能播放解决方案
  • Honey Select 2终极增强补丁:新手快速上手指南
  • NY382固态MT29F32T08GSLBHL8-24QM:B
  • NY379固态MT29F32T08GSLBHL8-36QA:B
  • Hanime1Plugin全景解析:Android动漫观看体验的技术革新