【从零开始入门unity游戏开发之——C#篇42】C#补充知识——随机数(Random)、多种方法实现string字符串拼接、语句的简写

news2025/1/7 0:57:38

文章目录

  • 一、随机数
    • 1、`Random.Next()`生成随机整数
      • 示例:生成一个随机整数
      • 生成指定范围内的随机整数
    • 2、`Random.NextSingle`生成随机浮点数
      • 示例:生成随机浮点数
    • 3、 生成随机字母或字符
      • 示例:生成随机字母
      • 示例:生成随机小写字母
  • 二、string字符串拼接
    • 1、通过`+`号来进行字符串拼接
      • 示例:
      • 注意事项:
    • 2、使用复合运算符`+=`进行字符串拼接
      • 示例:
      • 注意事项:
    • 3、`string.Format`进行字符串拼接
      • 示例:
      • 优点:
      • 注意事项:
    • 4、使用 String.Concat 进行字符串拼接
      • 示例:
      • 优点:
    • 5、使用`$`内插字符串
      • 示例:
  • 三、语句的简写
    • 1、单行语句的简写
    • 2、属性简写
    • 3、方法简写
  • 专栏推荐
  • 完结

一、随机数

在 C# 中,生成随机数通常使用 Random 类。Random 类提供了一些方法来生成不同类型的随机数,比如整数、浮点数等。

特点:左包含,右不包含

1、Random.Next()生成随机整数

要生成随机整数,可以使用 Random 类的 Next() 方法。

示例:生成一个随机整数

Random random = new Random();
int randomNumber = random.Next(); // 生成一个非负整数
Console.WriteLine(randomNumber);

生成指定范围内的随机整数

可以通过 Next(int minValue, int maxValue) 方法指定生成随机数的范围。minValue 是随机数的最小值(包含),maxValue 是随机数的最大值(不包含)。

Random random = new Random();
int randomInRange = random.Next(1, 100); // 生成 1 到 99 之间的随机整数
Console.WriteLine(randomInRange);

2、Random.NextSingle生成随机浮点数

如果需要生成随机的浮点数,可以使用 NextSingle() 方法,返回大于或等于0.0且小于1.0的随机浮点数。

示例:生成随机浮点数

Random random = new Random();
float randomFloat = random.NextSingle(); // 生成一个 0.0 到 1.0 之间的随机浮点数
Console.WriteLine(randomFloat);//比如返回0.49565697

3、 生成随机字母或字符

可以通过随机生成字符的 ASCII 码来生成随机字母。

示例:生成随机字母

Random random = new Random();
char randomChar = (char)random.Next('A', 'Z' + 1); // 生成大写字母
Console.WriteLine(randomChar);

示例:生成随机小写字母

Random random = new Random();
char randomChar = (char)random.Next('a', 'z' + 1); // 生成小写字母
Console.WriteLine(randomChar);

二、string字符串拼接

在 C# 中,字符串拼接有多种方式,每种方法都有不同的使用场景和性能表现。

1、通过+号来进行字符串拼接

这是最直接且常见的字符串拼接方式。你可以通过 + 运算符将两个或多个字符串连接在一起。

示例:

int i = 100;
string str = "你考了" + i + "分";
Console.WriteLine(str);

打印结果
在这里插入图片描述
注意字符串加数字的区别

string str = "123";
str = str + 1 + 2 + 3;
Console.WriteLine(str);  // 输出 "123123"
string str = "123";
str = str + (1 + 2 + 3);  // 1 + 2 + 3 = 6,所以 str 变为 "1236"
Console.WriteLine(str);  // 输出 "1236"

注意事项:

  • + 运算符每次拼接字符串时,都会生成新的字符串对象。这可能会导致性能问题,尤其是在循环中进行多次拼接时。
  • 字符串是不可变的,每次拼接时都会创建一个新的字符串对象,导致内存分配的开销。

2、使用复合运算符+=进行字符串拼接

+= 是一种复合赋值运算符,类似于 +,但它将拼接的结果赋值回原来的变量。这种方式和 + 运算符类似,但通常用于在已有字符串的基础上进行累加。

示例:

string str = "123";
str += 1 + 2 + 3 + 4;  // str 进行累加操作,1 + 2 + 3 + 4 = 10,所以 str 变为 "12310"
Console.WriteLine(str);  // 输出 "12310"
string str = "123";
str += "" + 1 + 2 + 3 + 4;  // 这里会先将 "" 和 1 拼接成 "1",然后 "1" 和 2 拼接成 "12",依此类推,最后 str 变为 "1231234"
Console.WriteLine(str);  // 输出 "1231234"
string str = "123";
str += "" + 1 + 2 + "" + (3 + 4);//优先计算括号内容
Console.WriteLine(str);  // 输出 "123127"

注意事项:

  • 与 + 运算符类似,+= 也会在每次拼接时创建新的字符串对象,因此在循环中频繁使用 += 拼接大量字符串时,也可能会导致性能问题。

3、string.Format进行字符串拼接

string.Format 方法可以将多个变量插入到一个格式化字符串中,是一种更具可读性和灵活性的拼接方式。你可以使用占位符 {0}, {1}, {2} 等将参数插入到格式化的字符串中。

示例:

string str1 = "Hello";
string str2 = "World";
string result = string.Format("{0} {1}", str1, str2);  // 使用 string.Format 拼接
Console.WriteLine(result);  // 输出 "Hello World"

优点:

  • string.Format 提供了更强大的格式化功能,比如日期格式化、数字格式化等,适用于更复杂的字符串拼接场景。
  • 它比 + 运算符和 += 更具可读性,尤其是在需要插入多个变量时。

注意事项:

  • 相对于 ++=string.Format 在性能上略有优势,尤其是当需要格式化多个变量时。

4、使用 String.Concat 进行字符串拼接

专门用于拼接多个字符串。它的性能比 + 运算符更高,尤其是在大量拼接字符串时。

示例:

string str1 = "Hello";
string str2 = "World";
string result = string.Concat(str1, " ", str2);  // 使用 String.Concat 拼接
Console.WriteLine(result);  // 输出 "Hello World"

优点:

  • String.Concat 比 + 运算符在性能上更高效,尤其是当需要拼接多个字符串时。
  • 它不会自动插入空格或其他字符,需要手动指定。

5、使用$内插字符串

C# 6.0 引入了字符串插值功能,可以更简洁地在字符串中嵌入变量。它使用 $"..." 语法,允许直接在字符串中插入变量或表达式。

示例:

string str = "向宇的客栈";
int num = 100;
Console.WriteLine($"来{str}学习C#知识,随便{num}分");

在这里插入图片描述


三、语句的简写

1、单行语句的简写

ifforforeachwhile 等语句中只有单个语句时,C# 允许省略大括号 {},直接写一行代码。这在某些情况下可以提高代码简洁性,但需要确保不会因为省略大括号导致逻辑混乱。

  • 示例:if 语句简写

    if (true) 
        Console.WriteLine("true");
    
    if (true) Console.WriteLine("true");
    
  • 示例:for 循环简写

    for (int i = 0; i < 10; i++) 
    	Console.WriteLine(i);
    
  • 示例:foreach 循环简写

    foreach (int i in new int[] { 1, 2, 3 }) 
    	Console.WriteLine(i);
    
  • 示例:while 循环简写

    while (true) 
    	Console.WriteLine("true");
    

2、属性简写

在 C# 中,属性可以用更加简洁的语法来表示,特别是当属性的 get 访问器只有一行代码时。通过使用箭头 => 运算符,可以简化属性的书写。

普通属性写法(带 get 和 set)

public int z {
    get {
        return x + y;
    }
}

简写属性写法(带箭头)

public int z => x + y;

这是一种简洁的写法,省去了 get 访问器的传统花括号和 return 关键字。当属性的返回值是单个表达式时,可以使用这种简写方式。

3、方法简写

C# 还支持方法的简写。当方法体只有一行代码时,可以使用箭头 => 来简化方法的定义。

  • 不带参数方法简写

    普通方法写法

    public int TestMethod() {
        return x + y;
    }
    

    简写方法写法

    public int TestMethod() => x + y;
    
  • 带参数方法简写

    带参数的方法写法

    public int TestMethod(int x, int y) {
        return x + y;
    }
    

    简写带参数的方法

    public int TestMethod(int x, int y) => x + y;
    
  • void 类型无返回值方法简写

    普通 void 方法写法

    public void TestMethod2() {
        Console.WriteLine("test");
    }
    

    简写 void 方法写法

    public void TestMethod2() => Console.WriteLine("test");
    

专栏推荐

地址
【从零开始入门unity游戏开发之——C#篇】
【从零开始入门unity游戏开发之——unity篇】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架开发】

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!如果你遇到任何问题,也欢迎你评论私信或者加群找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2271203.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

overleaf写学术论文常用语法+注意事项+审阅修订

常用语法 导入常用的宏包 \usepackage{cite} \usepackage{amsmath,amssymb,amsfonts} \usepackage{algorithmic} \usepackage{algorithm} \usepackage{graphicx} \usepackage{subfigure} \usepackage{textcomp} \usepackage{xcolor} \usepackage{lettrine} \usepackage{booktab…

Rabbitmq追问1

如果消费端代码异常&#xff0c;未手动确认&#xff0c;那么这个消息去哪里 2024-12-31 21:19:12 如果消费端代码发生异常&#xff0c;未手动确认&#xff08;ACK&#xff09;的情况下&#xff0c;消息的处理行为取决于消息队列的实现和配置&#xff0c;以下是基于 RabbitMQ …

DeepSpeed训练得到checkpoint如何像Huggingface模型一样评测evaluation?zero_to_fp32.py有什么用?怎么用?

DeepSpeed训练得到checkpoint如何像Huggingface模型一样评测evaluation&#xff1f; 具体步骤 首先看一个样例&#xff1a; 这是我用open-instruct框架&#xff0c;使用DeepSpeed训练1728个steps得到的一个checkpoint。请注意&#xff0c;下文我演示用的例子是基于step_1152&…

游戏如何检测Root权限

Root权限&#xff0c;即超级用户权限&#xff0c;在Android系统中&#xff0c;获取Root权限意味着用户可以修改系统文件、移除预装应用、安装特殊应用等。 在Root环境下&#xff0c;游戏面临着相当大的安全隐患&#xff0c;用户获取了最高权限&#xff0c;意味着可以通过各类工…

【UE5 C++课程系列笔记】21——弱指针的简单使用

目录 概念 声明和初始化 转换为共享指针 打破循环引用 弱指针使用警告 概念 在UE C 中&#xff0c;弱指针&#xff08;TWeakPtr &#xff09;也是一种智能指针类型&#xff0c;主要用于解决循环引用问题以及在不需要强引用保证对象始终有效的场景下&#xff0c;提供一种可…

微信小程序中的 storage(本地存储)和内存是两个完全不同的存储区域

这是一个非常关键且容易混淆的概念 既然 this.globalData.appId appId 是将 appId 存储在内存中&#xff0c;为什么微信小程序中的 wx.getStorage 和 wx.setStorage&#xff08;本地存储&#xff09;中没有 appId&#xff0c;并且您提出了一个非常重要的疑问&#xff1a;stor…

DevSecOps自动化在安全关键型软件开发中的实践、Helix QAC Klocwork等SAST工具应用

DevSecOps自动化对于安全关键型软件开发至关重要。 那么&#xff0c;什么是DevSecOps自动化&#xff1f;具有哪些优势&#xff1f;为何助力安全关键型软件开发&#xff1f;让我们一起来深入了解~ 什么是DevSecOps自动化&#xff1f; DevSecOps自动化是指在软件开发生命周期的各…

回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现CNN-GRU卷积门控循环单元多输入单输出回归预测 数据准备&#x…

小程序学习06——uniapp组件常规引入和easycom引入语法

目录 一 组件注册 1.1 组件全局注册 1.2 组件全局引入 1.3 组件局部引入 页面引入组件方式 1.3.1 传统vue规范&#xff1a; 1.3.2 通过uni-app的easycom 二 组件的类型 2.1 基础组件列表 一 组件注册 1.1 组件全局注册 &#xff08;a&#xff09;新建compoents文件…

股市学习 seekingalpha tradingview

EMA EMA&#xff08;Exponential Moving Average&#xff09;是一种技术分析中常用的指标&#xff0c;用于平滑股价或其他资产价格的波动&#xff0c;以帮助分析价格走势的趋势和方向。EMA与简单移动平均&#xff08;SMA&#xff09;类似&#xff0c;但对最新价格的权重更大&a…

【办公类-47-02】20250103 课题资料快速打印(单个docx转PDF,多个pdf合并一个PDF 打印)

背景需求&#xff1a; 2023区级大课题《运用Python优化3-6岁幼儿学习活动材料的实践研究》需要做阶段资料 本来应该2024年6月就提交电子稿和打印稿。可是python学具的教学实验实在太多了&#xff0c;不断生成&#xff0c;我忙着做教学&#xff0c;都没有精力去整理。 2025年…

unity学习4:git和SVN的使用差别

目录 1 svn 1.1 操作逻辑 1.2 对应工具 1.3 SVN避免冲突的好习惯 2 git 2.1 git的基础操作逻辑 2.1.1 commit时&#xff0c;提交文件之外的其他文件需要pull 2.1.2 commit时&#xff0c;发现要提交的本地文件和服务器的文件冲突了 2.1.3 pull 时 2.2 对应工具 2.3 …

【数据库初阶】MySQL数据类型

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; 数据库初阶 &#x1f389;其它专栏&#xff1a; C初阶 | C进阶 | 初阶数据结构 亲爱的小伙伴们&#xff0c;大家好&#xff01;在这篇文章中&#xff0c;我们将深入浅出地为大家讲解 MySQL…

kubernetes学习-Service

kubernetes学习-Service 1. Service说明2. 功能3.Service类型3.1 NodePort3.1.1 创建web-service.yaml3.1.2 创建web-pod.yaml3.1.3 部署3.1.4 验证 3.2 ClusterIP3.2.1 创建web-clusterIp-service.yaml3.2.2 创建web-clusterIp-pod.yaml3.2.3 部署3.2.4 验证 3.3 LoadBalancer…

滤波器的主要参数

为什么选择高阶&#xff1a; 滤波器的主要参数通常包括以下几个方面&#xff1a; 截止频率 (Cutoff Frequency)&#xff1a; 这是滤波器能够有效通过或抑制信号的频率点。对于低通滤波器&#xff0c;信号低于截止频率的部分会被通过&#xff0c;高于截止频率的部分会被衰减。高…

设计模式 创建型 单例模式(Singleton Pattern)与 常见技术框架应用 解析

单例模式&#xff08;Singleton Pattern&#xff09;是一种创建型设计模式&#xff0c;旨在确保某个类在应用程序的生命周期内只有一个实例&#xff0c;并提供一个全局访问点来获取该实例。这种设计模式在需要控制资源访问、避免频繁创建和销毁对象的场景中尤为有用。 一、核心…

290-3U VPX i7 刀片计算机

一、产品概述 该产品是一款基于第三代Intel i7双核四线程的高性能3U VPX刀片式计算机。产品提供了多个高速PCIe总线接口&#xff0c;其中3个x4 PCIe 3.0接口&#xff0c;1个x4 PCIe 2.0接口。x4 PCIe 2.0接口可灵活配置为4个x1 PCIe接口&#xff0c;因此产品具有很强的扩展性&a…

【从零开始入门unity游戏开发之——C#篇41】C#迭代器(Iterator)——自定义类实现 foreach 操作

文章目录 前言一、什么是迭代器&#xff1f;二、标准迭代器的实现方法1、自定义一个类CustomList2、让CustomList继承IEnumerable接口3、再继承IEnumerator接口4、完善迭代器功能5、**foreach遍历的本质**&#xff1a;6、在Reset方法里把光标复原 三、用yield return语法糖实现…

win32汇编环境,对话框程序中通过资源显示bmp图像

;运行效果 ;win32汇编环境,对话框程序中通过资源显示bmp图像 ;通过资源的方式&#xff0c;会把图像固定在exe文件里&#xff0c;会变大。通过读取文件的方式&#xff0c;没有固定在exe文件里&#xff0c;也可以随时换图像文件&#xff0c;所以exe文件较小 ;直接抄进RadAsm可编译…

MATLAB画柱状图

一、代码 clear; clc; figure(position,[150,100,900,550])%确定图片的位置和大小&#xff0c;[x y width height] %准备数据 Y1[0.53,7.9,8.3;0.52,6.8,9.2;0.52,5.9,8.6;2.8,5.8,7.9;3.9,5.2,7.8;1.8,5.8,8.4]; % withoutNHC X11:6; %画出4组柱状图&#xff0c;宽度1 h1…